httpsを使うために初めてサーバー証明書とる人の話
公開日:
:
IT一般教養
上司にSSLの証明書とっといて、と言われたけど証明書って何だっけ?取り方?な人のための仕組みを思い出しながら、事務手続きまでをまとめ。
ITも錬金術と同じで理解・分解・再構築が必要です。
HTTPSとSSL
HTTPSはHTTP通信を安全に行うための仕組みです。
HTTPS (Hypertext Transfer Protocol Secure) は、HTTPによる通信を安全に(セキュアに)行うためのプロトコルおよびURIスキームである。厳密に言えば、HTTPS自体はプロトコルではなく、SSL/TLSプロトコルによって提供されるセキュアな接続の上でHTTP通信を行うことをHTTPSと呼んでいる。
SSLは聞いたことあるけどTLSって何よ?
e-wordsより
TLS 1.0はNetscape Communications社が開発したSSL 3.0をもとに若干の改良が加えられたもので、RFC 2246としてIETFで標準化されている。
TLSの方が新しい!ってだけ。証明書とったら実はSSLじゃなくてTLSなのかも。
何が安全?
何が安全化というとSSLで暗号化するので盗聴を防ぐことができます。
さらにSSLはサーバーの証明書としての第三者の認証局(以降CA)が発行するのでなりすましを防ぐことが出来ます。
全体の流れ
まずは設定
1. 自分 :秘密鍵を作る
2. 自分 :秘密鍵を元に証明書署名要求(以降CSR)を作る
3. CA :CSRを元に「署名」をつけてサーバー証明書を作る
4. 自分 :CAが作ったサーバー証明書をサーバーに置く
※署名:サーバー証明書のハッシュ値を、認証局の秘密鍵で暗号化したデータ
実際の使われ方
5. ユーザー:ブラウザでサーバーにアクセスするときにサーバー証明書を受取る
6. ユーザー:サーバー証明書内の署名をCAの公開鍵で解凍
7. ユーザー:サーバー証明書のハッシュ値と6.の内容が一致していれば、CAが署名した(認めた)サーバーであることを確認できる
8. ユーザー:サーバーの公開鍵で暗号化通信を開始する
で、どうやってとるの?
証明書は下記手順で設定します。
- ドメインを取得 -> お名前.com
- SSLサーバー証明書を購入(今ココ) -> ベリサインSSLサーバー証明書
- 証明書をサーバーに設定
サーバー証明書の申請にはCSRが必要
0.サーバー証明書を買う
まずはベリサインで証明書の権利を購入します。年間数千円から数万円です。証明書はドメインに対して登録するので先にお名前.comなどでドメインを取得しておく必要があります。
あまり知られていないCAを使用すると、ブラウザにCA証明書がプリインストールされていないのでSSL通信を開始するときに警告がでたりして余計怪しかったりします。
これらは信頼性が第一なので大手に任せるのが一番です。
1.サーバー証明書要求を作る
サーバー証明書の元となるCSRを作成します。
秘密鍵をもとに作ります。
openssl genrsa 2048 > private-key.pem
private-key.pemが出来上がります。
そしてCSR(証明書署名要求)を作る
openssl req -new -key private-key.pem -out csr.pem
2.CSRをベリサインに送る
と、証明書を送り返してくれるのでサーバーに保存します。
証明書はドメインに結びついているので、ファイル名は「ドメイン名.crt」なんかがいいかと思います。
サーバーに設置にしてapacheを設定
1.証明書を設置
先に作成した秘密鍵と証明書を設置。下記は一例。
/etc/httpd/ssl/private-key.pem
/etc/httpd/ssl/my.domain.com.crt
2.mod_sslを用意
apacheでhttpsを行うにはmod_sslというモジュールが必要なので入ってなければインストール。
yum -y insall mod_ssl
/etc/httpd/conf.d/ssl.confが作成されるので
下記を設定
SSLCertificateFile /etc/httpd/ssl/my.domain.com.crt SSLCertificateKeyFile /etc/httpd/ssl/private-key.pem
3.httpd.confも編集
Listen 443 ServerName my.domain.com
Listen 443はssl.confにも書いてあるので重複する場合はどちらかをコメントアウトすること。
4.apache再起動
Listenの設定が重複しているとエラーとなります。
証明書の内容が間違っていてもエラーとなります。
そんなときは/var/log/error.logを確認しましょう。解決の糸口が見つかるかもしれません。
晴れて!
安全な通信が確立されました!
以上
関連記事
-
知らないと損をする6つのライセンスまとめ
オープンソースやフリーウェア、フリー素材などが巷に溢れ、それらを利用する機会が増えたわけですが、ライ