LoginSignup
27
28

More than 5 years have passed since last update.

Vagrant環境でオレオレSSL(たぶんできたけど・・)

Last updated at Posted at 2014-09-07

参考: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用の設定ファイル、無かったので新規作成。

ssl.conf
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 にまとめて書かれているので自分もそっちに書くことにした。

/etc/httpd/conf/httpd.conf
LoadModule ssl_module modules/mod_ssl.so

で、再起動。restartだとなぜか失敗したのでservice httpd configtestしてみたが特に問題はない。stopしてからstartする手順で一応再起動出来たのでブラウザで試すとhttpsではまだ接続できず。

気を取り直してhttpd.confに以下を書き足す。

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すればいけると思いきや・・・・いけなかった。
正常に接続できませんでした by Firefox
もうさっきからずっとこの画面だ。
参考にしてたページはもう一番下までいっちゃったけど・・・・。


で、ググったりしているうちにふと気付いた。次の一行が必要なのでは?

httpd.conf
Listen 443

書き足したらできたっぽい。

接続の安全性を確認できません

でも「接続の安全性を確認できません」とある。

技術的詳細のところを見ると

自己署名をしているためこの証明書は信頼されません。

参考:https://support.mozilla.org/ja/kb/Secure%20Connection%20Failed

う〜ん釈然としないゴールではあるがひとまずこれでいいのかな?
とりあえずセキュリティ例外ってやつに追加したら次からはちゃんと自分のページ出たし、URLのとこにもちゃんと鍵マークは付いてるし、「接続が暗号化されています」とも書いてあるからたぶん大丈夫なのだろうとは思うが・・・。

27
28
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
28