本篇是我個人的工作記錄,所以寫得比較簡略,放在這裡給有需要的人參考用。

正式的網頁伺服器所需要的 SSL 憑證是要經過上層機構簽發的,所以在安裝上跟一般自己簽發的憑證不同,以下是我在安裝 COMODO 所簽發憑證時的工作記錄。

準備憑證

查看自己的憑證:

openssl x509 -in my_ssl_key.pem -text

下載上層的憑證:

製作 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.crtserver.keychain.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 這個外部工具檢測。

參考資料:COMODOCOMODOSSLShopper寫程式是良心事業nixCraftdigicertredhatGitHubDeveloperSide.NETCOMODO黃昏的甘蔗Tsung’s Blog