![](/img/trans.png)
[英]SSL: match private key with certificate using PHP (without phpseclib)
[英]ssl: match private key with certificat | using php & phpseclib
情況:我有一個服務器管理面板,用戶應能夠上載私鑰/證書/ ca證書(/ CSR)以保護SSL網站。
上傳的數據如下所示:
私鑰=
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEA3u+SI24XGAqIHNLcmCfEFOpMVAOEZOw3DpZ7VexB6soLiu0a
[...]
M9YQw2MV/EhNXTh7PW85HJKAZyTxLJvWIXbEeY9XX+GkqJuQ1GhfgfE=
-----END RSA PRIVATE KEY-----
證書=
-----BEGIN CERTIFICATE-----
MIIDfjCCAmigAwIBAgIEU6fNGzALBgkqhkiG9w0BAQUwgYExCzAJBgNVBAYMAkRF
[...]
oosSAukE596+wwM0XXDFOT2T/D0lHvW1QVyFx0GzCRHWqQ==
-----END CERTIFICATE-----
問題:上傳后,我需要檢查cert / ca-cert是否與私鑰(/ CSR)匹配,以確保所有上傳的部分都屬於同一部分。
我想我被卡住了。 使用openssl,我可以檢查以下命令的輸出是否相互匹配。 但是我不知道如何用phpseclib做到這一點。
openssl x509 -noout -modulus -in certificate.crt | openssl md5
openssl rsa -noout -modulus -in privateKey.key | openssl md5
openssl req -noout -modulus -in CSR.csr | openssl md5
(我想堅持使用phpseclib,所以不可能使用openssl)
非常非常感謝你!
這樣的東西可以解決問題嗎?:
$rsa = new Crypt_RSA();
$rsa->loadKey(...);
$pubkey1 = $rsa->getPublicKey();
$x509 = new File_X509();
$x509->loadX509(...);
$pubkey2 = $x509->getPublicKey();
$csr = new File_X509();
$csr->loadCSR(...);
$pubkey3 = $csr->getPublicKey();
if (($pubkey1 == $pubkey2) && ($pubkey2 == $pubkey3)) {
echo "they're equal";
} else {
echo "they're not equal";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.