Let’s Encrypt のサーバ証明書や秘密鍵をちょっとだけ深追い 鍵のファイルなど
当サイトでも利用しております、だれでも簡単にしかも無料でHTTPS化ができてしまうすごい仕組みのLet’s Encrypt ですが、せっかくですので、もう少し設定について調べてみました。
こちら以前設定した際のメモです。
Ubuntu18.04とNginxで確認しています。
上記の方法ですとほんとに勝手に全部設定してくれますが、実際の秘密鍵、サーバ証明書などは以下のフォルダにあるものを使っていることがNGINXのconf設定からわかるかと思います。
/etc/letsencrypt/live/ドメイン名/
のフォルダ配下に
cert.pem chain.pem fullchain.pem privkey.pem
の4ファイルがありますね。実際にはシンボリックリンクで実態は
/etc/letsencrypt/archive/ドメイン名/
のフォルダ以下にprivkey1.pem, privkey2.pem、privkey3.pemのように連番つきで鍵が更新される度にファイルが作られていくようです。
READMEファイルがおいてありますので、見てみますと以下のようです。
privkey.pem
: the private key for your certificate.fullchain.pem
: the certificate file used in most server software.chain.pem
: used for OCSP stapling in Nginx >=1.3.7.cert.pem
: will break many server configurations, and should not be used
without reading further documentation (see link below).
ま詳しくはこちらを見てくれ、と書いてあります。
https://certbot.eff.org/docs/using.html#where-are-my-certificates
通常は「privkey.pem」と「fullchain.pem」だけ見とけば良いみたいですね。
秘密鍵(PrivateKey)確認
「privkey.pem」は秘密鍵ですので、当然門外不出で隠しておく鍵ですね。PEM形式で実際はこんな感じのテキストファイルです。Base64で素のデータがエンコードされているファイル、とのことです。
-----BEGIN PRIVATE KEY-----
Base64でエンコードされた文字がたくさん、、
-----END PRIVATE KEY-----
オリジナルのデータを確認したい場合は以下のopensslのコマンドで覗けるかと思います。
$ cd /etc/letsencrypt
$ sudo openssl rsa -in live/ドメイン名/privkey.pem -text -noout
サーバ証明書確認
「fullchain.pem」は証明書公開鍵ですので、外にだしてOKな鍵ですね。PEM形式で実際はこんな感じのテキストファイルです。はじめのCertificateは自身のサーバ証明書で、2番目のCertificateは中間証明書とのことです。
-----BEGIN CERTIFICATE-----
Base64でエンコードされた文字がたくさん、、
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Base64でエンコードされた文字がたくさん、、
-----END CERTIFICATE-----
「chain.pem」はfullchain.pemの中間証明書の部分だけ、「cert.pem」は自身のサーバ証明書の部分だけ抜き出した証明書になっていますね。
オリジナルの証明書データを確認したい場合は以下のopensslのコマンドで覗けるかと思います。秘密鍵の場合とちょっと渡す引数が違います。証明書の場合は「x509」です。
$ cd /etc/letsencrypt
#中間証明書を見たい場合
$ sudo openssl x509 -in live/ドメイン名/chain.pem -text -noout
#サーバ証明書を見たい場合
$ sudo openssl x509 -in live/ドメイン名/cert.pem -text -noout
オフィシャルサイトによりますと、古いapacheだったりNGINXで「OCSPStapling 」をやりたい場合はこちらの証明書(「chain.pem」と「cert.pem」)を単独で利用することがあるよ、とのことのようです。
ちなみに「OCSP Stapling」 って何?ということでこちらですね。
Online Certificate Status Protocol – Wikipedia – ウィキペディア
サーバ証明書の有効性を調べるためのプロトコルですね。
これだけでもお腹いっぱいですが、WindowsでIISとか使っているとPFX形式とかDERとかさらに色々なフォーマットが出てよくわからなくなっちゃいますよね。
先程のopensslで確認できる実際のデータの内容や、Windowsでの形式はまた別の記事で研究してみたいと思います。