最近セキュリティ強化の一貫として、社内の業務系アプリケーション(Redmine等)もSSL通信が必要となりました。ECサイトでもないためバカ高いSSL証明書を使うよりは安いSSL証明書を使うことにしました。そこで選んだのはRapidSSLです。また、社内アプリと言っても一杯サブドメインを分けているのでRapidSSLワイルドカードタイプ(*.co-mit.comをすべて対応)を選択しました。本記事はその導入手順について書きたいと思っています。
環境はUbuntu14.04(Nginx)での手順ですが、どのOSでも大抵一緒だと思います。前提はOpenSSLを使うことになりますが〜
サーバーにログインし、ルート権限になってください。
まずは、秘密キーを発行します。
mkdir /etc/nginx/ssl cd /etc/nginx/ssl/ openssl genrsa -des3 -out server.key 2048
それからCSRファイルを発行します。これはSSL証明書を買う時には必要な内容です。
openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key: {秘密キー入力}
Country Name (2 letter code) [XX]:{JP}
State or Province Name (full name) []:{Saitama}
Locality Name (eg, city) [Default City]:{Saitama-City}
Organization Name (eg, company) [Default Company Ltd]:{Co-mit Inc.}
Organizational Unit Name (eg, section) []:{Development}
Common Name (eg, your name or your server's hostname) []:{*.co-mit.com}
Email Address []:{管理アドレスメールを入れる}
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:{何もしないでenter}
An optional company name []:{何もしないでenter}
ワイルドカードタイプで大事なのはCommon Nameです。ここは*.co-mit.comのように入力しないといけません。そうすると、sub1.co-mit.com、sub2.co-mit.comは使えます。
cat server.csrコマンドでその内容をコピーしてください。
RapidSSLといってもいろいろなところで買えます。一番安いssl-store.jpで買いました。
ECサイトで買い物する感覚でSSL証明書を購入してください。ssl-store.jpはオンラインサイトですので、即にSSL証明書を発行してくれるのでうれしいです。先ほど作成されたCSRファイル内容の貼り付けがあります。
すると、SSL証明書内容が書かれるメールを受信できると購入完了です。
RapidSSLの場合、サーバー証明書と中間証明書の2つがありますので、server.pemを作る時にはこの感じ。
-----BEGIN CERTIFICATE----- サーバ証明書のxxxxx -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- 中間証明書のxxxxx -----END CERTIFICATE-----
これでserver.pemを保存してください。
これはめんどくさいので、特にサーバー再起動は大変です。なので、パスフレーズを聞かないようにしたほうがいいです。
cp server.key server.key.withpass openssl rsa -in server.key -out server.key
後はNginxの設定をやれば終わりです。弊社の設定だとこんな感じ。
server {
listen 443;
server_name *.co-mit.com;
ssl on;
ssl_certificate /etc/nginx/ssl/server.pem;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
}
その後、Nginxを再起動して、httpsでアクセス問題なければ終わりです。ブラウザーではこんな感じです。

Leave a Comment