#あらすじ
先輩に教えてもらったサーバ構築の備忘録、SSLを発行し443ポートで見れるようにする。
##OpenSSL
暗号鍵の作成に使うライブラリです。
##mod_ssl
Apache httpd で HTTPS での接続を実現するために使うモジュールです。
##インストール
インストールしていきましょう、以降のターミナルの記述はrootユーザーでなければ頭にsudo を付けましょう
$ yum -y install mod_ssl
#インストールが完了すると /etc/httpd/conf.d/ssl.conf に mod_ssl の設定ファイルが作成されます。
#(CentOSのみ)
$ yum -y install openssl
##秘密鍵・SSL証明書の作成
ec2の場合の作成場所は ~ です。本当は格納先で作りたかったのですが、sudoにしてもダメだったのであとでmvで引っ越します。
まずは、server.key という名前の秘密鍵が記載されたファイルを作ります。
[ec2-user@ip ~]$ openssl genrsa 2024 > server.key
Generating RSA private key, 2024 bit long modulus
............................+++
...............................................................................+++
次に証明書署名要求を作成します。
証明書署名要求は、認証局にサーバの公開鍵に電子署名してもらうよう要求するメッセージです。
[ec2-user@ip ~]$ openssl req -new -key server.key > 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) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Oota-ku
Organization Name (eg, company) [Default Company Ltd]:test
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []test.net
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
これでserver.csr というファイルが作成されました。
##サーバ証明書の作成
最後に本稿の成果物であるサーバ証明書を作成します。
普通であれば上で作成した証明書署名要求 (server.csr) を VeriSign などの機関に送付して認証局の秘密鍵で署名してもらいますが、今回は自分で署名することでサーバ証明書を作成しますので、上で作成した自分の秘密鍵 (server.key) で署名します。
[ec2-user@ip ~]$ openssl x509 -req -days 3650 -signkey server.key < server.csr > server.crt
Signature ok
subject=/C=JP/ST=Tokyo/L=Oota-ku/O=test/CN=test.net
Getting Private key
これで三つのファイルができました。
[ec2-user@ip ~]$ ls
server.crt server.csr server.key
次にOpenSSLでつくられるファイルの格納先を作り,移動させましょう。
[ec2-user@ip ~]$ mkdir /etc/httpd/conf/ssl
[ec2-user@ip ~]$ mv server.crt /etc/httpd/conf/ssl
[ec2-user@ip ~]$ mv server.csr /etc/httpd/conf/ssl
[ec2-user@ip ~]$ mv server.key /etc/httpd/conf/ssl
[ec2-user@ip ~]$ ls /etc/httpd/conf/ssl
server.crt server.csr server.key
次にmod_ssl の設定ファイルを編集しましょう。
[ec2-user@ip ~]$ cd /etc/httpd/conf.d/
#設定ファイルのバックアップ(.orgを付けてファイル複製)
[ec2-user@ip conf.d]$ cp ssl.conf ssl.conf.org
[ec2-user@ip conf.d]$ vim ssl.conf
#100行目にあるSSLCertificateFileを修正
SSLCertificateFile /etc/httpd/conf/ssl/server.crt
#107行目にあるSSLCertificateKeyFileを修正
SSLCertificateKeyFile /etc/httpd/conf/ssl/server.key
#保存したら再起動
[ec2-user@ip conf.d]$ sudo systemctl restart httpd
再起動がうまくいけばhttps(443番ポート)で入れるようになったはずです。URLをhttps://に変えて入ってみましょう!もしうまくいかなければポートが解放されてるか確認してください。
こう変わっていれば成功です!個人で作った証明書なのでこんな表示になるわけですね。
詳細ボタンを押してアクセスするを選択して、httpの時と変わらないものが表示されればOKです!
これでhttpsが使えるようになりました!次はリバースプロキシというものを導入してみようかと思います。ではまた。
##参考文献
OpenSSL で SSL 自己証明書を発行する手順