ローカル環境や一般公開しない特定の範囲内で使用する分には、自己証明書(オレオレ証明書)でも問題ありませんが、一般公開するような用途では警告(信頼された証明機関から発行されたものではありません)が出てしまうのでお勧めできません。
最近ではSSL証明書の導入を標準化する流れですし。
そこで、さすがに有料になってしまいますが、正式なSSLサーバ証明書を発行してみます。
最近は安いもので年額1,500円程度で発行できます。
※最近では Let’s Encrypt という無料のSSL証明書もあったりします。
SSLサーバ証明書には下記の3種類があるのですが、
- ドメイン認証SSL
- 企業認証SSL
- EV SSL
ドメイン認証SSL以外は個人で取得できないので、ドメイン認証SSLを取得する前提ですすめます。
CSR(Certificate Signing Request)の作成
まずは、申し込みに必要となるCSR(Certificate Signing Request)ファイルを用意します。
途中まではオレオレ証明書を作成する流れと一緒です。
まずは、ディレクトリを移動。(ここである必要はありません。)
# cd /etc/pki/tls/private
そして、秘密鍵の作成。
# openssl genrsa -des3 2048 -rand /var/log/ > www.hoge.jp.key
Generating RSA private key, 2048 bit long modulus
................................................................................+++
..........................................+++
e is 65537 (0x10001)
Enter pass phrase: ←秘密鍵のパスフレーズを入力
Verifying - Enter pass phrase: ←もう一度入力
あと、暗号化を解除しておきます。(オリジナルはコピーしておく)
# cp -p www.hoge.jp.key www.hoge.jp.key.org
# openssl rsa -in www.hoge.jp.key -out www.hoge.jp.key
Enter pass phrase for private/localhost.key: ←秘密鍵のパスフレーズを入力
writing RSA key
そしてCSRの作成。正式な証明書なので、入力項目は正式な情報を入力します。
# openssl req -new -key ./www.hoge.jp.key -out ./www.hoge.jp.csr
Country Name (2 letter code) [XX]:JP ←国コード
State or Province Name (full name) []:Tokyo ←都道府県
Locality Name (eg, city) [Default City]:Edogawa-ku ←市区町村
Organization Name (eg, company) [Default Company Ltd]:SOFTPLUS ←組織名(これは自分が名乗っているもので大丈夫です。サイト名など)
Organizational Unit Name (eg, section) []: ←部署名(未入力でもOKです)
Common Name (eg, your name or your servers hostname) []:www.hoge.jp ←発行するドメイン(間違わないように!)
Email Address []: ←未入力でOK
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ←未入力でOK
An optional company name []: ←未入力でOK
これでCSRの完成です。
発行を申請(委託)する
あとは発行を委託するサービスを選びます。
これはお好きなサービスを選べば良いと思いますが、自分はさくらのラピッドSSL(年額税込み1,620円)を選びました。(サーバもさくらなので)
申し込みの際に先ほど作成したCSRを求められると思うので、入力して申請します。
さくらの場合はこの後、ドメインの正当性確認のために確認用のHTMLファイルが発行されるので、それをドメイン直下に配置(インターネットから参照できるように)して待ちます。
さくらのラピッドSSLだと、営業日の申請であれば早ければその日にサーバ証明書が発行されます。
中間証明書という名の落とし穴
発行されたら、あとはサーバに設定するだけなのですが、ここで注意すべき点があります。
発行機関によっては発行された証明書の他に、中間証明書もサーバ側に設定してあげないといけません。(まさにラピッドSSLはそうでした)
中間証明書を設定しないと、PCのブラウザなどでも問題なく(警告なく)表示されても、Androidのブラウザなどではなぜか警告が出るという状態になります。
自分も最初はまりました。。。ちゃんと証明書の発行通知のメールに中間証明書もインストールしてと書いてあるんですけどね(笑)
Apacheではサーバ証明書の他に中間証明書を指定するプロパティがあるのですが、Nginxにはありません。
ならどうするのか?。。。答えは簡単で1ファイルにくっつけてあげますw
# cat www.hoge.jp.crt
-----BEGIN CERTIFICATE-----
発行されたサーバ証明書
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
中間証明書
-----END CERTIFICATE-----
なので、証明書としての中身はこんな感じで2つが一緒に記載された形になります。