本篇是我個人的工作記錄,所以寫得比較簡略,放在這裡給有需要的人參考用。
正式的網頁伺服器所需要的 SSL 憑證是要經過上層機構簽發的,所以在安裝上跟一般自己簽發的憑證不同,以下是我在安裝 COMODO 所簽發憑證時的工作記錄。
準備憑證
查看自己的憑證:
openssl x509 -in my_ssl_key.pem -text
下載上層的憑證:
- COMODORSAOrganizationValidationSecureServerCA.crt
- COMODORSAAddTrustCA.crt
- AddTrustExternalCARoot.crt
製作 CA Bundle:
cat comodorsaorganizationvalidationsecureserverca.crt \ comodorsaaddtrustca.crt \ addtrustexternalcaroot.crt \ > ca-bundle.crt
將所有憑證合併成一張:
cat my_ssl_key.pem ca-bundle.crt > chain.pem
轉換為 PKCS 12 格式:
openssl pkcs12 -export -in chain.pem -out chain.pfx
Tomcat 8
將憑證放置在適當的位置:
sudo cp chain.pfx /usr/share/tomcat8/conf/
在 server.xml
設定檔中加入以下設定:
<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 --> <Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="/usr/share/tomcat8/conf/chain.pfx" keystorePass="your_password" keystoreType="PKCS12" clientAuth="false" sslProtocol="TLS"/>
重新啟動 Tomcat 服務:
catalina.sh stop catalina.sh start
測試新的憑證:
openssl s_client -connect host.nxhx.org.tw:8443 openssl s_client -connect host.nxhx.org.tw:8443 | openssl x509 -noout -subject -issuer
正常的話,Verify return code
會回傳 0
:
[略] SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES256-GCM-SHA384 Session-ID: 58F417F4F85229F489AEB2984AD494E8E956F81FDAB64B3974283B5F368093DD Session-ID-ctx: Master-Key: A169A0F8EA998618A590B2EF8C297D87CFD677B7F4110680ACF756DBD2E3F8FB6B16A99E2F75F250E8D4CEE136BB0B4C Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None Start Time: 1492391924 Timeout : 300 (sec) Verify return code: 0 (ok)
Apache 伺服器
mod_ssl
建立放置 SSL 憑證的目錄:
sudo mkdir /etc/httpd/ssl
將自己伺服器的 server.crt
、server.key
與 chain.crt
放在這裡,接著設定 mod_ssl
:
SSLEngine on SSLCertificateFile /etc/httpd/ssl/server.crt SSLCertificateKeyFile /etc/httpd/ssl/server.key SSLCACertificateFile /etc/httpd/ssl/ca-bundle.crt
mod_nss
匯入憑證:
pk12util -i chain.pfx -d /etc/httpd/alias/
Enter password for PKCS12 file: pk12util: no nickname for cert in PKCS12 file. pk12util: using nickname: *.nxhx.org.tw - COMODO CA Limited pk12util: PKCS12 IMPORT SUCCESSFUL
# add this line in /etc/httpd/conf.d/nss.conf NSSNickname "*.nxhx.org.tw - COMODO CA Limited"
重新啟動 Apache:
systemctl restart httpd.service
Nginx
參考 Nginx 官方文件,修改設定檔:
server { # ... ssl_certificate "/etc/nginx/ssl/chain.crt"; ssl_certificate_key "/etc/nginx/ssl/server.key"; # ... }
測試工具
網站設定好之後,可以使用 COMODO SSL Analyzer 這個外部工具檢測。
參考資料:COMODO、COMODO、SSLShopper、寫程式是良心事業、nixCraft、digicert、redhat、GitHub、DeveloperSide.NET、COMODO、黃昏的甘蔗、Tsung’s Blog