zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

SSLボックスでCoreSSL(格安SSL)証明書

■SSLBOX(http://www.sslbox.jp/)でのCoreSSL購入について

RapidSSLの値上げ以降、CoreSSL※(認証局:COMODO)が格安SSLの定番になりつつある様ですので、こちらに移行しました。
RapidSSL証明書と取得方法はほぼ同一ですが、念のために取得方法を更新しておきます。

【1】事前準備

1)https://secure.netowl.jp/netowl/ ←ネットオウルに入会
2)事前にSSLボックス価格表(http://www.sslbox.jp/service/service_core_lineup.php)にて税込価格を確認の上、ポイントを購入しておく。今回はキャンペーン価格でCoreSSL1年分:1,069円→事前に1069ポイントの購入が必要。
3)[SSL証明書の取得]に進んでひとまずポイント消費して購入しておいてから、下記作業を進める。
※CoreSSLはメール認証なので、あらかじめドメイン管理者のメールアドレス(hostmaster@hogehoge.comなど)を用意しておくこと。

【2】証明書取得実作業

# 作業ディレクトリに移動

cd /etc/httpd/conf/ssl/

■サーバーの秘密鍵作成

秘密鍵(鍵長2048)
ファイル名に年号をつけてるのは、今後更新の時に間違えない様にするため。

openssl genrsa -out ssl.hogehoge.com.2015.key 2048
chmod 400 ssl.hogehoge.com.2015.key

CSR(証明書要求)作成(SHA-1は2017年をまたぐ申請にはもう利用できないとのことでsha-256で)

openssl req -new -key ssl.hogehoge.com.2015.key -out ssl.hogehoge.com.2015.csr -sha256

# 以下の問い合わせに回答する。

string is too long, it needs to be less than 2 bytes long
Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:Tokyo
Locality Name (eg, city) [Newbury]:Koutou-ku
Organization Name (eg, company) [My Company Ltd]:hogehoge, Inc.
Organizational Unit Name (eg, section) :system
Common Name (eg, your name or your server's hostname)
:ssl.hogehoge.com
Email Address []:

# 内容を確認する

openssl req -in ssl.hogehoge.com.2015.csr -text

# 権限を所有者だけにしておく

chmod 400 ssl.hogehoge.com.2015.csr

■生成したCSRを業者に提出し、CRTを受け取る。

[SSLボックス管理]-購入した証明書ID-[新規申請]
・コモンネームに取得するドメインssl.hogehoge.com)を記入
CSR入力欄に生成したCSRを貼り付け
・確認画面で「承認用メールアドレス」を確認、受信できるメールアドレスに変更しておきます(ここに承認メールが届きます)。
・その他申請登録情報を記載します。

■承認メールに記載されたURLより申請を承認する

※セキュアコアはメールで送られたバリデーションコードを入力して承認するスタイル。

Domain Control Validation (Part 2)
Please enter your "validation code" for Order #xxxxxxxx, then click "Next"

SSLボックスのステータスが「発行申請中」になっていることを確認。しばらく待つ
→CRTが添付されたメールが届く
【重要】ssl.hogehoge.com SSL証明書発行完了のお知らせ(ORDER #xxxxxxxx)

■CRTファイルを作成

承認後に完了メールが届くので、管理画面から以下をダウンロードしておきます。
f:id:zuntan02:20150911153616p:plain
・「CERT(SSL証明書)」→ssl.hogehoge.com.2015.crtとして保存
・「中間証明書」→ inter.crtとして保存

# SSL証明書類の権限を変更

chmod 600 ssl.hogehoge.com.2015.crt

# 証明書の内容を確認
# csr作成時と内容を比較して間違いがないことを確認しておく。

cd /etc/httpd/conf/ssl/
openssl x509 -text -noout -in ssl.hogehoge.com.2015.crt

Apacheに設置の場合

■設定ファイルを修正(以下は環境に合わせてください)

vi /etc/httpd/conf.d/ssl.conf

                                    • -

# Server Certificate:
SSLCertificateFile /etc/httpd/conf/ssl/ssl.hogehoge.com.2015.crt

# Server Private Key:
SSLCertificateKeyFile /etc/httpd/conf/ssl/ssl.hogehoge.com.2015.key

# Server Certificate Chain:
SSLCertificateChainFile /etc/httpd/conf/ssl/inter.crt

                                    • -

# gracefulで反映
apachectl configtest
apachectl -k graceful
ps aux | grep http


■Nginxに設置の場合
nginxには、中間証明書を直接指定するディレクティブが用意されていないため、
サーバ証明書と中間証明書を結合したものを「ssl_certificate」で指定します。

ファイル結合コマンド
# 例)cat server.cer cacert.cer > cert.pem

cd /etc/nginx/conf.d
cat ssl.hogehoge.com.2015.crt inter.crt > ssl.hogehoge.com.2015.pem
chmod 400 ssl.hogehoge.com.2015.pem

結合した証明書ファイルは、下記のような構成になります。

          • BEGIN CERTIFICATE-----

[サーバ証明書]

          • END CERTIFICATE-----
          • BEGIN CERTIFICATE-----

[中間証明書]

          • END CERTIFICATE-----

※SecureCoreの中間証明書はルート証明書を含むので以下の様になります。

          • BEGIN CERTIFICATE-----
          • END CERTIFICATE-----
          • BEGIN CERTIFICATE-----
          • END CERTIFICATE-----
          • BEGIN CERTIFICATE-----
          • END CERTIFICATE-----

# nginxに記述

server {
listen 443 default ssl;
ssl on;

ssl_certificate /etc/nginx/conf.d/ssl.hogehoge.com.2015.pem;
ssl_certificate_key /etc/nginx/conf.d/ssl.hogehoge.com.2015.key;
(以下略)

# 反映

nginx -t
service nginx restart

AWSのELBに設置の場合
[編集]-[追加]

ロードバランサープロトコル HTTPS
ロードバランサーのポート 443
インスタンスプロトコル HTTP
インスタンスのポート 80
暗号 初期値ママ


SSL証明書-[新しいSSL証明書のアップロード]

証明書名 ssl.hogehoge.com.2015
プライベートキー ssl.hogehoge.com.2015.keyの中身をコピー&ペースト
パブリックキー証明書 ssl.hogehoge.com.2015.crtの中身をコピー&ペースト
証明書チェーン inter.crtの中身をコピー&ペースト