(2015-09-02) (2016-06-14追記 本ページの内容は Raspbian wheezy での手順だが、Jessie でも大体同じようにできると思う、おそらく。) 今回は、本物の(有償のちゃんとした)認証局で証明書を取得して、Apache2+mod_ssl環境へ組み込んでみたいと思います。 それにしても近頃は値段がずいぶん安くなったものです。その分、証明書内の組織名や所在地、団体名などの確認もまあそこそこ(ていうか書類審査なしでメール受信確認だけだし)なんでしょうけど。でも、少なくとも暗号化通信という観点ではまったく問題ないのではないかと思っております。 目次 認証局、証明書の種類の選定 †SSL BOX(エスエスエル ボックス) を使います。 証明書が何種類か提供されていますが、一番安そうな
というのでやってみようと思います。 独自ドメインを取得したときの作業内容はこっち→「独自ドメイン取得」 登録の基本的な流れは下記のようになっていますのでここでは説明しません。途中、証明書を設定するサーバーを選択する場面がでてきますが、管理人TKは自前のサーバーなので「その他のサーバーで利用する」を選択します。 ちなみによくある質問はこっち http://www.sslbox.jp/support/faq.php WEBサイトのSSL/TLS化 †当たり前ですが、これをやっとかないとお話になリません。 それと、忘れずに、SSL/TLSで公開するURLのドメイン名(FQDN)でIPアドレスが引けるように、DNSの設定を変更しておきます(後述のCSRへ書き込む Common Name)。 秘密鍵 †WEBサーバーをSSL/TLS化した時の秘密鍵が必要です。 承認確認メールアドレスの準備 †WEBサーバーのSSL/TLS化と合わせて先に準備しておいたほうが良いのが、これです。 SSL BOXで証明書の申請を出す際、承認結果を受け取りるために、以下のいずれかのメールアドレスが必要になります。
SSL BOXの申請手続き画面では、上記1, 2のメールアドレスが自動でドロップダウンリストに表示される仕組みになっています(メールアドレスの直接入力は不可)。
てな具合で詳細は省略しますが、上記のメールアドレスで必ずメール受信できるよう、しつこいぐらいに動作確認してください。でないと、証明書の発行連絡を受け取れなくなってしまいます。 証明書署名要求(CSR) †基本的には、「オレオレ証明書編」の通りですが、SSL BOX のサポートのページ(下記)の説明を参考に、CSRへの入力内容を決めていきます。
管理人TKのホームページは今のところ個人の趣味のページであり、商売やっているわけではないので、その辺も考慮しつつの作業となります(こんなんで証明書とかやっていいんかいな・・・)。 というわけで識別名(ディスティングイッシュネーム)。
opensslでCSR作成時に、上記以外にも Email Address, A challenge password, An optional company name の入力を要求されますが、それらは空欄にせよ、と先のサポートページにありますのでその通りにします。 で、実際のCSRファイル作成ですが、以下の様なテンプレートファイルを作成し、openssl コマンド実行時に指定することで、入力の手間・誤りを防ぐことができます(man reqで確認できます)。 # cat csr.template [ req ] distinguished_name = req_distinguished_name [ req_distinguished_name ] C = Country Name (2 letter code) C_default = JP ST = State or Province Name (full name) ST_default = Tokyo L = Locality Name (eg, city) L_default = Chiyoda O = Organization Name (eg, company) O_default = AngelCurio personal OU = Organizational Unit Name (eg, section) OU_default = personal CN = Common Name (e.g. server FQDN or YOUR name) CN_default = tls.angelcurio.com 上記ファイルを作っておいて、下記のコマンドを実行すると、リターンキーの入力だけで、CSRファイルを作成することができます。 # openssl openssl req -new -config csr.template -key ../ssl.key/server.key -sha256 -out tls.angelcurio.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [JP]: State or Province Name (full name) [Tokyo]: Locality Name (eg, city) [Chiyoda]: Organization Name (eg, company) [AngelCurio Personal]: Organizational Unit Name (eg, section) [personal]: Common Name (e.g. server FQDN or YOUR name) [tls.angelcurio.com]: といった具合です。内容の確認は下記。 # openssl req -text -noout -in tls.angelcurio.csr | head Certificate Request: Data: Version: 0 (0x0) Subject: C=JP, ST=Tokyo, L=Chiyoda, O=AngelCurio personal, OU=personal, CN=tls.angelcurio.com Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) (以下省略) Subject: のところにテンプレートの内容が反映されているのが分かります。 CSRによる申請 †SSL BOXの管理画面へログインし(実際には SSL BOX も Star Domain も全部同じ管理画面ですが)、いよいよ証明書の申請を行います。 まずは下記の画面ヘ進み、「新規申請」ボタンを押して次の画面へ進みます。 CSR(証明書署名要求)の入力 †コモンネームには、証明書の対象となるドメイン名(CSRのCNに設定したもの)を入力します。 申請登録情報の入力 †次の画面では、下記の入力エリアがありますので適宜入力します。
備考:★は入力必須*1 次の画面へ進むと入力内容の確認画面が表示されますので、間違いないようなら、
ボタンを押すと、次の画面へ進み、下記のようなメッセージが表示されて申請が完了します(多分:-)。 取得申請を完了しました。 承認メールアドレス「xxx@xxxxx」にメールが届きますので承認作業をお願いします。 あとは承認メールが来るのを待つだけです(といいつつすぐ来ました:-)。 承認メール受信、承認 †承認メールに記載された URL へブラウザでアクセスすると、下記のような画面が表示されますので、これまた承認メールに記載されている validation code を入力します。 正しいコードを入力し、Next>ボタンを押すと、下記のメッセージが表示され承認完了となります。 Thank you You have entered the correct Domain Control Validation code. Your certificate will now be issued and emailed to you shortly. Please close this window now. さらにもうしばらくすると、証明書が記載されたメールが承認メールと同じ宛先に届きます。 証明書のWEBサーバーへの組み込み+仮想ホスト追加 †下記のファイルをコピーして、証明書用の仮想ホストの定義を追加します。
なお、上記の default-ssl は「その1-オレオレ証明書編」で修正済みのものです。 証明書の組み込み方法ですが、基本的には下記ページの手順通りです。 証明書と中間証明書の2つをSSL BOXの管理画面からダウンロードしてファイルに保存します。 ServerName tls.angelcurio.com SSLCertificateFile /usr/local/apache2/conf/ssl.crt/CORESSLxxxxx.cert SSLCACertificateFile /usr/local/apache2/conf/ssl.crt/CORESSLxxxxxInt.cert ファイル名は、Apache2のSSLCertxxxの指定と合っていれば何でもいいです。 その他、設定はお好みでどんぞ。 あとはいつものおまじないとして下記を実行して、設定を有効化します。 # /usr/local/apache2/bin/a2ensite-me vhost-ssl-angelcurio-coressl # /usr/local/apache2/bin/apache2ctl-me graceful 動作確認 †ブラウザ †2016-07-25 証明書の有効期限が切れています(2016-07-15で期限切れ)。予めご了承ください。 ブラウザで https://tls.angelcurio.com/ へアクセスして、証明書を確認します。 2016-01-27追記: 証明書を表示(コマンド、証明書ファイル指定) †証明書ファイルを直接指定して、中身を表示することができます。 openssl x509 -in CORESSLxxxxx.cert -text 肝の部分はこんな感じ。 Signature Algorithm: sha256WithRSAEncryption Issuer: C=JP, ST=OSAKA, L=OSAKA, O=SecureCore, CN=SecureCore RSA DV CA Validity Not Before: Jul 15 00:00:00 2015 GMT Not After : Jul 14 23:59:59 2016 GMT Subject: OU=Domain Control Validated, OU=CoreSSL DV, CN=tls.angelcurio.com あるいは中間証明書を指定。 openssl x509 -in CORESSLxxxxxInt.cert -text SSL/TLS通信により証明書を表示 †openssl コマンドでSSL/TLS通信により証明書を確認することができます。 $ openssl s_client -connect 192.168.1.20:443 -showcerts -servername tls.angelcurio.com -connectで指定したホスト:ポートへ接続し、証明書を表示してくれます。
補足: 以上、疲れた。 |