Let’s Encryptの証明書によるSSL通信とOCSP Staplingの実装

Let’s Encryptで取得した証明書の適用とOCSP Staplingの設定。

OCSPレスポンダーサーバーとの接続確認。

curl ocsp.digicert.com/ping.html

下記の表示が出れば接続完了。

You have successfully reached the DigiCert OCSP Service

apache(ver2.4.27)の場合。 apacheのSSL通信の設定ファイルを以下のように編集。(例:/etc/httpd/conf.d/ssl.conf) pemファイルのNは、Let’s Encryptで発行された番号。

<VirtualHost ...:443>
#SSL Stapling設定の追加
SSLUseStapling on
...
SSLCertificateFile /.../fullchainN.pem
SSLCertificateKeyFile /.../privkeyN.pem
...
</VirtualHost>
#追記
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)

apacheを再起動後に、下記のコマンドを実行して、

openssl s_client -connect wildcard3.testtotest.com:443 -tls1 -status -reconnect 2>&1 < /dev/null | grep OCSP

下記のように成功が確認できれば完了。

OCSP response: 
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response

nginx(ver1.12.1)の場合。 nginxの設定ファイルのSSL通信を行っている箇所を以下のように編集。(例:/etc/nginx/conf.d/www.conf) pemファイルのNは、Let’s Encryptで発行された番号。

server {
    ...
    ssl_certificate /opt/dehydrated/certs/wildcard3.testtotest.com/fullchainN.pem;
    ssl_certificate_key /opt/dehydrated/certs/wildcard3.testtotest.com/privkeyN.pem;
    ...
    ssl_stapling on;
    ssl_stapling_verify     on;
    ssl_trusted_certificate     /opt/dehydrated/certs/wildcard3.testtotest.com/fullchainN.pem;
    resolver          8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout     5s;
    ...
}

nginxを再起動後に、下記のコマンドを実行して、

openssl s_client -connect wildcard3.testtotest.com:443 -tls1 -status -reconnect 2>&1 < /dev/null | grep OCSP

下記のように成功が確認できれば完了。

OCSP response: 
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response

最後のコマンドでエラーが出る場合。

OCSP response: no response sent

の表示が出る場合、証明書の指定が間違っている可能性あり。 ssl_trusted_certificateに指定する証明書は、サーバ証明書を証明する証明局の証明書を指定する。(証明局のルート証明書等) Let’s Encryptでは、SSL/TLS サーバ証明書(公開鍵を含む)と中間証明書の両方が含まれているファイルであるfullchain.pemを指定する。