はじめに
頼まれごとで、レンタルサーバ上にあるwebアプリケーションに対して、ssl証明書の設定をするという場面がありました。
sslの仕組みも分かっていないペーペーですが、メモを兼ねて作業ログを残します。
手順
こんな感じでやりました。
- CSRファイル作成
- CSRファイルをSSL証明書発行会社に送付(然るべきアップローダーがあるのでそこへアップ)
- SSL証明書と、レンタルサーバのためのSSL中間証明書を受け取る
- SSL証明書・SSL中間証明書それぞれのファイル作成
- SSL証明書・SSL中間証明書・秘密鍵をアップする
- SSL設定がうまくいったかを確認
今回の状況
- 端末OS: Mac OSX
- SSL発行元: Global Sign社
- 備考: レンタルサーバ側ドメインに対してSSLを設定(よく分かっていないので表現不適切かも)
1. CSRファイル作成
SSL証明書の発行は今回はGMO系列のglobal sign社にやってもらっています。
Global sign社のサイトを見ます:Generate CSR - OpenSSL
$ cd # ~/ へ移動
$ mkdir csr # ~/csr を作成
$ cd csr # ~/csr へ移動
$ openssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout privatekey.key # 鍵とかCSR作成
CSRっていう、おそらくSSL証明書のタネのようなものを作成します。
openssl req
コマンドを打つと、次の表っぽいのが出てくるので、然るべき項目を埋めます。
下表の内容の他に、email, domainあたりを聞かれます。Country Nameは日本だとJPが良いと思います。
Field | Example |
---|---|
Country Name | US (2 Letter Code) |
State or Province | New Hampshire (Full State Name) |
Locality | Portsmouth (Full City name) |
Organization | GMO GlobalSign Inc (Entity's Legal Name) |
Organizational Unit | Support (Optional, e.g. a department) |
Common Name | www.globalsign.com (Domain or Entity name) |
参考: Apache+OpenSSL:CSRの作成 | CSP SSL
2. CSRファイルをSSL証明書発行会社に送付(然るべきアップローダーがあるのでそこへアップ)
- を実行すると、
~/csr/CSR.csr
が作成されるので、それをSSL発行元のサイト上でアップ。
3. SSL証明書と、レンタルサーバのためのSSL中間証明書を受け取る
10分弱で、SSL証明書と、SSL中間証明書がメールにて受け取れます。
4. SSL証明書・SSL中間証明書それぞれのファイル作成
受け取ったメールのSSL証明書・SSL中間証明書を、テキストエディタでテキストファイルに書き込みます。
# ~/csrで作業継続
$ vim 2016-10-22.crt # SSL証明書
# <メール文面からSSL証明書の部分をコピペして保存>
$ vim 2016-10-22-mid.cer # SSL中間証明書
# <メール文面からSSL中間証明書の部分をコピペして保存>
ここまでで、SSL証明書・SSL中間証明書のテキストファイルが出来ました。
次に、権限変更。
$ chmod 400 2016-10-22.crt # SSL証明書
$ chmod 400 2016-10-22-mid.cer # 中間証明書
$ chmod 600 privatekey.key # 秘密鍵
権限について参考: Apache+OpenSSL:CSRの作成 | CSP SSL
5. SSL証明書・SSL中間証明書・秘密鍵をアップする
手元に、
役割 | ファイル名 |
---|---|
SSL証明書 | 2016-10-22.crt |
SSL中間証明書 | 2016-10-22-mid.cer |
秘密鍵 | privatekey.key |
があるので、レンタルサーバのSSL設定ページにて
全てアップします。
6. SSL設定がうまくいったかを確認
上記のことをやると、大抵うまくいくのですが、
Androidはセキュリティにシビアなようで、
Android端末のchromeでサイトを確認すると
次のような画面が出たりします(出てしまいました)。
...マジか。...
「Android SSL証明書 エラー」で検索してると
次の記事を発見。
SSL中間証明書不足でAndroidがSSLエラー出してた件 | Moral Hazard!!
これによると、Apple製品上でSSLが適用されているように見えるものの、
実際にはうまくworkしていないということです。
確認方法としてはSemantec社のサイトに対象domainを打ち込むこと->
SSL Checker | Symantec CryptoReport
で、実はファイル名がおかしかったっぽいのと、
chmodで権限変更していなかったのが問題っぽかったです。
最初はSSL checkerでもnot installedなどと表示されていたのが、然るべき修正を加えることで
次の結果を得ました。
そんで、Androidユーザーの方にも問い合わせたところ、先程のようなバグは出なくなりました。
めでたしめでたし。