読者です 読者をやめる 読者になる 読者になる

Carpe Diem

備忘録。https://github.com/jun06t

SSLの設定

SSL

概要

  • SSL暗号化通信
  • サイトの実在証明

となるSSLの設定を行います。
今回はいわゆるオレオレ証明書なので前者のSSL暗号化通信のみ対応します。

環境

設定

サーバ側秘密鍵作成

フォルダを移動します。

# 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 []: ←不要

サーバ証明書の作成

先ほどのCSRVeriSignなどの認証局に送ると公的なサーバ証明書が発行されます。
ただそういったサービスは基本有料ですし、クレジット会社など信頼の必要なところくらいで個人でサーバを構築する場合は自前で署名で証明書を発行します。
名前は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に入っています。
これは別の時に使うことがある(メールのリレー送信時など)ので消さないようにしてください。

参考