参考:http://wiki.centos.org/HowTos/Https
だいたい上のページ通りに進めればOK(たぶん)。
やるにはやったが、けっこう分からないことだらけだったりする。
まず必要なものを yum でインストール。
yum install mod_ssl openssl
自分の環境では openssl は既に入っていたので mod_ssl のみだった。
で、ここからが本番。そしてやっていることをほとんど理解できないという・・・。
openssl genrsa -out ca.key 2048
ca.keyが出来る。鍵を作ってるのは雰囲気で分かるが、 2048って何の数値だろう?
openssl req -new -key ca.key -out ca.csr
これをやるとなんか色々聞かれた後(本番じゃないし、たぶんテキトーでOK。ただしcommonNameだけ要注意っぽい。サーバドメインに合わせないと後々エラーになる?)にca.csrが出来る。これは錠前みたいなものだろうか?
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
これが証明書?365は有効期限だと思うから今回は一年間有効なものを作成している。期限が切れたらまた作り直さないといけないのだろうか?(その場合証明書だけ?それとも鍵から一式全部を新たに作り直すのか?)
作ったらそれらを規定の場所に置いておく。
cp ca.crt /etc/pki/tls/certs/
cp ca.key /etc/pki/tls/private/
cp ca.csr /etc/pki/tls/private/
それで、
restorecon -RvF /etc/pki/
まあとりあえず、という感じで実行。見た目では何も変わらない。 いったい裏で何が起こっているのだろう?
そうしたら設定ファイルを書いてみる。
vim /etc/httpd/conf.d/ssl.conf
ssl用の設定ファイル、無かったので新規作成。
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
これだけでいいのだろうか?なんかもっと書かなきゃいけない気がするが・・・・
まあいいや。
service httpd restart
とりあえず再起動。すると・・・・
Starting httpd: Syntax error on line 1 of /etc/httpd/conf.d/ssl.conf:
Invalid command 'SSLCertificateFile', perhaps misspelled or defined by a module not included in the server configuration
[FAILED]
はい駄目でした。モジュールが定義されてない的なことを言いたそうなのでLoadModule書けばいいのかな?
このままssl.confに書いてもたぶん問題ないと思うのだが、他のLoadModuleは httpd.conf にまとめて書かれているので自分もそっちに書くことにした。
LoadModule ssl_module modules/mod_ssl.so
で、再起動。restartだとなぜか失敗したのでservice httpd configtest
してみたが特に問題はない。stopしてからstartする手順で一応再起動出来たのでブラウザで試すとhttpsではまだ接続できず。
気を取り直してhttpd.confに以下を書き足す。
NameVirtualHost *:443
#
#
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
<Directory /home/vagrant/www/public>
AllowOverride All
</Directory>
DocumentRoot /home/vagrant/www/public/
ServerName myfirst.test
</VirtualHost>
DirectoryとDocumentRootのパスは人によって違うかもしれないが、おそらくデフォルトで書かれている普通のHTTPのほう(<VirtualHost *:80>
)を真似ていけばOK。
ServerNameは先ほど入力したcommonNameと同じものを書かないと駄目(?)。
そしてまた再起動。 https://myfirst.test にアクセスするも・・・・失敗。
ファイアウォール関係?最初の参考ページに書かれていた以下を実行。
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
service iptables save
iptables -L -v
コマンドのオプションというものを自分が全く把握していないことを再確認できた感じ。
ともあれこれでrestartすればいけると思いきや・・・・いけなかった。
もうさっきからずっとこの画面だ。
参考にしてたページはもう一番下までいっちゃったけど・・・・。
で、ググったりしているうちにふと気付いた。次の一行が必要なのでは?
Listen 443
書き足したらできたっぽい。
でも「接続の安全性を確認できません」とある。
技術的詳細のところを見ると
自己署名をしているためこの証明書は信頼されません。
参考:https://support.mozilla.org/ja/kb/Secure%20Connection%20Failed
う〜ん釈然としないゴールではあるがひとまずこれでいいのかな?
とりあえずセキュリティ例外ってやつに追加したら次からはちゃんと自分のページ出たし、URLのとこにもちゃんと鍵マークは付いてるし、「接続が暗号化されています」とも書いてあるからたぶん大丈夫なのだろうとは思うが・・・。