2012/12/11(Tue)StartComでお手軽SSL証明書を維持する(更新編)

2012/12/11 1:53 NetService
StartCom Free SSL Certification Authorityといえば、Class 1 SSL証明書を無料で1年発行してくれるStartSSLというサービスを提供してる便利どころ。
認証も該当ドメインでメールを受け取るだけと簡単で、自宅サーバ辺りでHTTPSをお手軽に提供する人にうってつけ。
オレオレ証明書より良い印象になるのではないでしょうかね。

うちでも使っているStartSSLの証明書がそろそろ有効期限を迎えそうで、これまで何度か更新に手間取って失効させたりしていたので、いい加減自分のメモも兼ねて記事を書くことに。

初回1年目の作成方法(サインアップ)

日本語表記が無いので、ちょっと取っつきにくいかもしれないんだけど、アカウントを新規に作って1年目を運用する手順を書いたサイトは、数多く存在しているのでそちらを参考に。
例えば、Windows Maniaxさんとかフリーなウェブ屋の自由帳さんをどうぞ。

更新のリマインダー

作成した証明書は1年の期限があり、2週間前になるとこんなメールが届きます。(2通)
Subjectが同じなので間違えないように。

▼1件目:StartSSL Certificate Expiration, HH:MM am/pm dd mmm yyyy
This mail is intended for the person who owns a digital certificate issued by the StartSSL(TM) Certification Authority (http://www.startssl.com/).

The Class 1, client certificate for your-mail-account@example.com and serial number xxxxxx (xxxxxx) is about to expire in about two weeks. Please log into the StartSSL Control Panel at https://www.startssl.com/?app=12 and get a new certificate for this purpose. Failing to update your client certificate might result in the loss of your account.

Should you have lost the client certificate which was previously issued to you, please register once again - login without the client certificate installed into your browser will not work in that case.

-- 
Best Regards

StartCom Ltd.
StartSSL(TM) Certification Authority
▼2件目:StartSSL Certificate Expiration, HH:MM am/pm dd mmm yyyy
This mail is intended for the person who owns a digital certificate issued by the StartSSL(TM) Certification Authority (http://www.startssl.com/).

The Class 1, server certificate for exmaple.com and serial number xxxxxx (xxxxxx) is about to expire in about two weeks. Please log into the StartSSL Control Panel at https://www.startssl.com/?app=12 and get a new certificate for this purpose.

-- 
Best Regards

StartCom Ltd.
StartSSL(TM) Certification Authority
それぞれ何かというと、1件目の方がコントロールパネルのログインのために使っているクライアント証明書の更新が迫っているということ、2件目がサーバーのSSL証明書の期限が迫っていることで、その両方を更新する必要があります。
以前、誤って2件目の方のサーバー側だけ更新してしまったので、その翌年にコントロールパネルを開こうと思ったら失効してて偉い目に遭いました。
ちなみにそうなってしまった場合、アカウントは新しく作ってEmail認証とDomain認証を行った上で、新しくクライアント証明書を発行してもらう必要があります。また、該当ドメインで新しいSSL証明書を作成するためには、その時点で使っているSSL証明書の有効期限を過ぎて失効するまで待つ必要があります。

2年目以降の更新方法

先ほどのメールが来たら、まずクライアント証明書を更新し、次にサーバ証明書を発行するという流れになります。
クライアント証明書は、Emailアドレスの認証を行ってからドメイン認証、サーバ証明書は秘密鍵の作成と証明書の受領(あるいはCSRの送付と証明書の受領)というようにそれぞれ2段階になっています。
経験上、StartComとのやりとりに使うブラウザは、証明書のバックアップなどの面からFirefoxが一番楽でした。

  1. 前年に作ったクライアント証明書がブラウザにインストールしてある状態で、StartSSL(TM) Certificates & Public Key Infrastructureを開き、Authenticateをクリック。
    startssl01.png
  2. 個人証明書を要求されたら、有効なことを確認してOKをクリック。
    もしキャンセルをクリックすると、ブラウザを終了するまで状態を覚えてしまうため、ブラウザ再起動が必要です。
    startssl02.png
  3. ログインしてコントロールパネルを開くと、こんな感じです。まず、Validations Wizardをクリック。
    startssl03.png
  4. Email Address ValidationのままContinue
    startssl04.png
  5. 現在登録しているEmailアドレスを記入してContinue
    startssl05.png
  6. そのEmailアドレス宛に以下のようなValification Codeが届くので、それを入力してContinue。1分もかからず届くようです。届かない場合は、迷惑メールに混ざってたりしてないか確認を。
    This mail is intended for the person who requested verification of email ownership at StartSSL(TM) (http://www.startssl.com).
    
    Your verification code is XXXXXXXXXXXXXXXX
    Copy and paste this code now into the form at your open browser window.
    
    Thank you!
    
    StartCom Ltd.
    StartSSL(TM) Certification Authority
    
    startssl06.png
  7. この画面が出たら完成。
    ここにも書いてあるように、Emailアドレスの認証はこの時点から30日だけです。その間に次のドメイン認証を行って、クライアント証明書を手に入れなければ無意味なものになります。
    startssl07.png
  8. もう一度、Validations Wizardをクリック。
    startssl03.png
  9. 今度は、Domain Name Validationに変更してからContinueをクリック。
    startssl08.png
  10. 証明書を作る予定のトップレベルドメインを入力し、Continueをクリック。例えば、sv.kerosoft.comのサーバ証明書を作る場合でも、入力するのはkerosoft.comです。
    startssl09.png
  11. 認証コードを受け取るためのEmailアドレスを選びます。このときだけは、この中のどれかで受け取れるよう、メールサーバのアカウントを調整する必要があるので注意。
    startssl10.png

    ユーザーが存在しない等、受取拒否が返るとこういうエラーになるので、Domain Name Validation最初からやり直し。
    startssl11.png
  12. うまくメールが受信出来たら、Verification Codeを入力してContinueをクリック。
    startssl12.png
  13. これでドメイン認証まで完了。こちらの認証も、この時点から30日間の有効期限です。
    startssl13.png
  14. 続いて、Cerifications Wizardに進みます。
    startssl14.png
  15. Certificate TargetはS/MIME and Authentication Certificateのままで、Continueをクリック。
    startssl15.png
  16. 高強度の暗号化を選んでContinueをクリック。(何故ここだけ日本語…)
    startssl16.png

    Firefoxが公開鍵と秘密鍵を作っているようです。
    startssl17.png
  17. Emailに先ほど認証したEmailアドレスが記載されていることを確認後、Secure Hash AlgorithmをSHA2に変更後、Continueをクリック。そこに書いてある通り、SHA2を選ぶとWindows XP SP3未満や2003 SP2未満でサポートされないらしいですが、SHA1より強固になります。最近のスマートフォンでも大丈夫のようです。参考
    startssl18.png
  18. これでクライアント証明書の発行完了。ブラウザに自動的にインストールされるので、ファイルにバックアップを取っておきます。
    startssl19.png
  19. Firefoxだと、[ツール}→[オプション]→詳細→暗号化タブ→証明書を表示...→あなたの証明書タブと開いていくと、先ほど作ったものが有ります。バックアップ...ボタンでファイル(*.p12形式)へ変換しておきます。
    startssl20.png
  20. さて、最後にやっとサーバ証明書を作ります。もう一度Cerifications Wizardに進みます。
    startssl14.png
  21. Certificate TargetをWeb Server SSL/TLS Certificateに変更してContinueをクリック。
    startssl21.png
  22. ここで作り方が2通りに分かれます。本来ならばサーバ上でCSR(Certificate Request)と呼ばれる未署名の新しいサーバ証明書を作って、それをStartSSLに署名してもらう形を取る方が秘密鍵を伝送しないので最も安全です。この方法を取る場合は、SkipをクリックしてCSRファイルを送付します。
    しかし、今回はクライアント証明書付きのHTTPS経路で通信しているので、StartSSLで証明書を作ってもらうことにしましょう。32桁までの十分長くて安全なKey Passwordを用意し、Keysizeを4096 (High)、Hash AlgorithmをSHA2にしてContinueをクリック。
    startssl22.png
  23. CSRを作っている場合はSKIPしてね、と再度警告されるが、了承しているのでOKで続行。
    startssl23.png
  24. ここでPrivate Keyを保存しろと言われるので、安全な場所にserver.keyとでも名前をつけて保存しておきます。
    startssl24.png
  25. これをドメインに紐付けします。先ほどのドメイン認証から30日以内でないと、ここにリストされないので注意。
    startssl25.png
  26. さて、ここでHTTPS証明書として使うサブドメインを入力します。今回はsv.kerosoft.comで使う証明書を作りたいので、svを指定。なおCertificate Subject Alt Nameは、トップレベルドメイン(kerosoft.com)も指定されているため、https://kerosoft.com/というサイトにも共用することができます。
    さらに他の名前を指定したり、*.kerosoft.comのようなワイルドカードは使えません。
    startssl26.png
  27. もう一度確認。sv.kerosoft.comとkerosoft.comで使える証明書を作ります。
    startssl27.png
  28. ここまで来て、最後に人でチェックするようですね。最大3時間待ってねと言われるので、コーヒーでも入れてメールを待ちます。
    startssl28.png
  29. とか書いてたら2分くらいで以下のようなメールが来ました。
    To xxxxxxxx xxxxxxx,
    
    This mail concerns the digital certificate you requested from the StartCom Certification Authority (http://www.startssl.com). Your certificate with serial number xxxxx has been signed and is available at the Control Panel:
    
    https://www.startssl.com/?app=12
    
    Please login to  your account and select from the Tool Box tab the section Retrieve Certificate. The pending certificate is marked with a green colored label.
    
    Thank you!
    
    StartCom Ltd.
    StartSSL(TM) Certification Authority
    
  30. Toolboxのなかから、Retrieve Certificateをクリック。
    startssl29.png
  31. Certificateリストの中から、今新しく作ったサーバ証明書を選び、Continueをクリック。
    下の方に並んでいるのはクライアント証明書ですね。このコントロールパネルに入るために使うものなので、ここでダウンロードする必要性はないはずですが…。
    startssl30.png
  32. ついにサーバ証明書が手に入りました。server.crtとでも名前を付けて、サーバに導入します。
    startssl31.png
作った証明書は、作った日の前日から来年の今日までの1年間の有効期限なので、来年はもうちょっとだけ早く更新することになります。
くれぐれも忘れないようにね!

サーバの自動起動への対応

このままだと、httpdの再起動時に証明書のパスフレーズ入力を求められます。
# service httpd restart

Restarting httpd (via systemctl):  Enter SSL pass phrase for sv.kerosoft.com:443 (RSA) :
Broadcast message from root@spinel (Tue, 11 Dec 2012 01:38:31 +0900):

Password entry required for 'Enter SSL pass phrase for sv.kerosoft.com:443 (RSA) :' (PID 21404).
Please enter password with the systemd-tty-ask-password-agent tool!

********************************
                                                           [  OK  ]
以下のようにパスフレーズを削除して運用する方法もあります。
# chown root:root server.key server.crt

# chmod 400 server.key server.crt

# openssl rsa -in server.key -out server.key

Enter pass phrase for server.key:
writing RSA key
# service httpd restart

Restarting httpd (via systemctl):                          [  OK  ]