SSL設定

生成key、csr、crt

資料來源:Apache2.4配置SSL后启动报错AH02577: Init: SSLPassPhraseDialog builtin

1.key的生成

openssl genrsa -des3 -out server.key 2048

這樣是生成rsa私鑰,des3算法,openssl格式,2048位強度。 server.key是密鑰文件名。為了生成這樣的密鑰,需要一個至少四位的密碼。可以通過以下方法生成沒有密碼的key:

openssl rsa -in server.key -out server.key

server.key就是沒有密碼的版本了。

2. 生成CA的crt

openssl req -new -x509 -key server.key -out ca.crt -days 3650

生成的ca.crt文件是用來簽署下面的server.csr文件。

3. csr的生成方法

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

需要依次輸入國家,地區,組織,email。最重要的是有一個common name,可以寫你的名字或者域名。如果為了https申請,這個必須和域名吻合,否則會引發瀏覽器警報。生成的csr文件交給CA簽名後形成服務端自己的證書。

4. crt生成方法

CSR文件必須有CA的簽名才可形成證書,可將此文件發送到verisign等地方由它驗證,要交一大筆錢,何不自己做CA呢。

openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt

輸入key的密鑰後,完成證書生成。 -CA選項指明用於被簽名的csr證書,-CAkey選項指明用於簽名的密鑰,-CAserial指明序列號文件,而-CAcreateserial指明文件不存在時自動生成。 最後生成了私用密鑰:server.key和自己認證的SSL證書:server.crt 證書合併:

cat server.key server.crt > server.pem

Apache on Windows 設流程須注意

設定可參考: Linux——Apache+OpenSSL 实现HTTPS单双向验证

  • httpd.conf
    取消註解Include conf/extra/httpd-ssl.conf
  • httpd-ssl.conf
    將以下註解
    • SSLPassPhraseDialog builtin
    • SSLSessionCache ...
  • httpd-ssl.conf以及httpd-vhost.conf內的ssl vhost
    設定
    SSLEngine on
    SSLCertificateFile "conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "conf/ssl.key/server.key"
    SSLCertificateChainFile "conf/ssl.crt/ca.crt"
    
    (路徑須注意)