Linux

在 apache 上安裝 SSL 證書…使用什麼證書?

  • April 30, 2013

我是一名中級 Linux 使用者,並被分配了使 Apache 執行 https 連接的任務。目前正在執行centOS 6,我的問題如下:

安裝了 mod_ssl 並嘗試正確設置路徑,但不確定我是否使用了正確的文件。我有class2-root.crt 和 root-2-int.cer也給了我wildcard.ssl.pfx。我意識到有一個變數必須指向我沒有的*“.key”文件。*因此使用以下方法生成:

openssl req -new -keyout server.key -out server.csr

有很多資源顯示如何線上執行此操作並嘗試了很多次但沒有運氣。我只需要根據我的情況提供幫助的人告訴我我只需要觸摸和配置哪些文件。另外,如果密鑰必須與我擁有的證書來自同一來源?我需要什麼證書?

我在 httpd.conf 中所做的正是這個:

<VirtualHost *:443>
DocumentRoot /var/www/html
ServerName MyServer_Ip_Adress
SSLEngine on
SSLCertificateFile /etc/ssl/crt/class-root.crt
SSLCertificateKeyFile /etc/ssl/crt/server.key
SSLCertificateChainFile /etc/ssl/crt/root-2int.cer
</VirtualHost>

在此之後無法停止 Apache 也無法重新啟動它。停止總會失敗。

您不能只為您的證書生成一個隨機密鑰;您必須使用生成它的那個。證書中有一個公鑰(通常是 RSA),客戶端將在密鑰交換過程中使用該公鑰;要完成密鑰交換,您將需要私鑰,它(除其他外)驗證證書是您的。否則,您可以使用在 Internet 上找到的任何證書來冒充他人。

如果您提供無效的證書資訊,apache 將失敗。

您獲得的證書鏈可能包含三個證書:一個用於根 CA(我懷疑是 class-root.crt),一個由該根 CA (root-2int.cer) 簽名的中間 CA,以及您的伺服器證書由中間 CA 簽署。幾乎所有的 SSL 證書都是這樣排列的。根證書將被客戶端信任;您的伺服器必須提供自己的證書和其他將其連結到根的證書(例如根證書和中間證書)。

鏈文件是做什麼的。要創建鏈文件,您應該將中間證書和 CA 證書連接到一個文件中,例如。

cat /etc/ssl/crt/root-2int.cer /etc/ssl/crt/class-root.crt > /etc/ssl/crt/chain.crt

然後,將 chain.crt 指定為您的SSLCertificateChainFile. 這將導致 Apache 將這兩個證書與您的證書一起發送作為有效性的證據。

您還需要從 PFX 文件中提取證書和密鑰,其中包含以下兩者:

openssl pkcs12 -nocerts -in wildcard.ssl.pfx -out wildcard.key
openssl pkcs12 -clcerts -nokeys -in wildcard.ssl.pfx -out wildcard.crt

然後,如果私鑰是加密的(例如,你有一個密碼),如果你希望 apache 能夠在不提供密碼的情況下啟動,你應該解密它(並使用文件系統權限保護它:模式 0400 並由 root 擁有:root 例如)。為此(假設 RSA):

openssl rsa -in wildcard.key -out wildcard-decrypted.key

然後,您可以使用這兩個文件:

SSLCertificateFile /etc/ssl/crt/wildcard.crt
SSLCertificateKeyFile /etc/ssl/crt/wildcard-decrypted.key

只要證書都匹配,那應該可以工作。如果您想檢查您的證書是否與您的密鑰相對應,請使用以下兩個命令(輸出應該相同,並再次假設 RSA):

openssl x509 -modulus -noout -in /etc/ssl/crt/wildcard.crt
openssl rsa -modulus -noout -in /etc/ssl/crt/wildcard-decrypted.key

引用自:https://serverfault.com/questions/503965