sslでエラーが出るのは,SSL証明書の発行元のせいだったよ!

[`evernote` not found]
Bookmark this on Hatena Bookmark
Share on Facebook
LINEで送る

背景

StartSSLで発行した証明書を使用しているサーバ(この鯖でした)へのアクセス時,たまにchromeで証明書エラーが出ていた.
特定のマシンでしかエラーが出ないので,放置していたんだけれども,最近になってfirefoxでもエラーが出るようになり本格的に怪しいと感じるようになったので証明書の発行元について調べてみた.

StartSSL(StartCom)のSSL証明書がiPhoneなどで認識されない問題 | カニとモモンガと愉快なユウ

ダメぢゃん…

はい,発行元,乗り換えるよ!

SSL証明書の発行

乗り換え先として名前がいくつかのサイトで挙がっていた Certbot へ移行することにした.
無料でSSL証明書を発行できるのはメリットだね!

発行手順(debianの場合のみ)

  1. backportsをsources.listに追加して,apt-getでbackportsからインストールできるようにする.
    ここは,どっかのサイトを調べてできるようにしてね.
  2. certbotをインストールする.
    python関連の他の用途では使わないパッケージが色々と入れられるので,可能なら他のホストで実行することをオススメする.
    私の場合,別のVMを立ててポートフォワードを設定変更して(証明書の設定の手順に関係)証明書の発行だけした.

    sudo apt-get install certbot -t jessie-backports
    
  3. 既存のkeyからcsrを作成する.
    注意は,既存サーバと同じホストで実行する場合,既存サーバの443ポートと競合するので,既存サーバを落としておくこと.

    openssl genrsa -aes256 2048 > server.key  # <- 未だ秘密鍵がない場合
    openssl req -new -sha256 -key server.key -out server.csr  # <- 未だ証明書署名要求がない場合
    sudo certbot certonly --standalone --csr server.csr --config-dir . --logs-dir . --work-dir . -d DOMAINNAME
    
  4. dhパラメタの生成.
    openssl dhparam 2048 -out dhparam.pem
    
  5. 証明書を設定する.
    まず,0000_cert.pemが証明書本体.
    0000_chain.pemが中間証明書かルート証明書か,ともかく証明書を連結して使う最近のトレンドで証明書本体と連結すべきやつ.trusted_certificateにも,これを指定する.
    0001_chain.pem上2つの連結証明書.nginxとかはこれを使う.

    ssl_certificate /path/to/0001_chain.pem;
    ssl_certificate_key /path/to/server.key;
    ssl_dhparam /home/hada/sslfiles/dhparam.pem;
    ssl_trusted_certificate /path/to/0000_chain.pem;
    
  6. 鯖を再起動して完了