概要
- SSL暗号化通信
- サイトの実在証明
となるSSLの設定を行います。
今回はいわゆるオレオレ証明書
なので前者のSSL暗号化通信
のみ対応します。
環境
- Ubuntu 14.04
- OpenSSL 1.0.1f
設定
サーバ側秘密鍵作成
フォルダを移動します。
# cd /etc/ssl/private/
秘密鍵を作成します。server.key
とします。主なオプションは
- 暗号化アルゴリズム
- 鍵長
です。暗号化アルゴリズムは以下の種類があります。
種類 | 説明 |
---|---|
des | DES。56bit |
des3 | 3DES。112bit |
aes128 | AES。128bit |
aes192 | AES。192bit |
aes256 | AES。256bit |
今回はaes256
、鍵長2048
で作ります。
# openssl genrsa -aes256 -out server.key 2048 Generating RSA private key, 2048 bit long modulus .....................................................+++ ........................................................+++ e is 65537 (0x10001) Enter pass phrase for server.key: yyyy Verifying - Enter pass phrase for server.key: yyyy
パスフレーズはyyyy
としてます。
秘密鍵からパスフレーズ削除
パスフレーズが付いたままだとSSLを利用するサービスが起動するたびにパスワード入力しなくては行けないのでパスフレーズを削除します。
# openssl rsa -in server.key -out server.key Enter pass phrase for server.key: writing RSA key
秘密鍵から証明書要求(公開鍵でもある)を作成
次にサーバ証明証要求ファイルCSRを作ります。名前はserver.csr
とします。
CSRとは、サイト証明書を発行するためのリクエストです。
-days
オプションで証明書の有効期限を設定できます。
# sudo openssl req -new -days 365 -key server.key -out server.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:JP ←国 State or Province Name (full name) [Some-State]:Tokyo ←県 Locality Name (eg, city) []:Tokyo ←市町村 Organization Name (eg, company) [Internet Widgits Pty Ltd]:Company ←組織名 Organizational Unit Name (eg, section) []:Section ←部門名 Common Name (e.g. server FQDN or YOUR name) []:www.example.com ←自分のFQDN Email Address []:foo@gmail.com ←メールアドレス Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: ←不要 An optional company name []: ←不要
サーバ証明書の作成
先ほどのCSRをVeriSignなどの認証局に送ると公的なサーバ証明書が発行されます。
ただそういったサービスは基本有料ですし、クレジット会社など信頼の必要なところくらいで個人でサーバを構築する場合は自前で署名で証明書を発行します。
名前はserver.crt
とします。
# sudo openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365 Signature ok subject=/C=JP/ST=Tokyo/L=Tokyo/O=Company/OU=Section/CN=www.example.com/emailAddress=foo@gmail.com Getting Private key
パーミッションの変更
# chmod 400 server.*
以上でオレオレ証明書
の作成は完了です。
補足
公的な認証局のルート証明書が/etc/ssl/certs
に入っています。
これは別の時に使うことがある(メールのリレー送信時など)ので消さないようにしてください。