目次
(a) その1:MyDNS を使って web サーバーをたてる
(b) その2:オレオレ認証を使った https 化(今回)
(c) その3:Let's Encrypt を使ったサーバー認証
(d) その4:vhost や ssl などの apache24 の設定
(e) その5:サイトの内容に関する注意点(最終)
今回は,通称オレオレ認証(自己署名証明書)を使って,apache24 の https 化の設定をしてみよう。
必要なものは,
・秘密鍵(private key)
・証明書署名要求(csr)
・サーバー証明書(crt)
である。 これら(実際には key ファイルと crt ファイル)があれば,https 化が可能となる。 今回はオレオレ証明書をopensslで作る(詳細版) (ろば電子が詰まっている)を参考にした。
(1) 自己署名証明書作成
まずは apache24 の設定ファイルがあるディレクトリに移動しておこう。 FreeBSD の場合は,以下のディレクトリになる。
# cd /usr/local/etc/apache24
次に「秘密鍵(Private Key)」を作ろう。 これは以下のコマンドを実行する。
# openssl genrsa -out private.key -aes128 2048ここでは 2048 ビットの暗号化キーを作っている(はず…)。
結果は以下のようになる。
Generating RSA private key, 2048 bit long modulus ...........................................................................................................+++ .................................................................+++ e is 65537 (0x10001) Enter pass phrase for private.key: ←パスフレーズ Verifying - Enter pass phrase for private.key: ←パスフレーズ(確認)ここで「←パスフレーズ」と書いた部分でパスワードを入力している。
上記のキーはパスワードありの秘密鍵だったが,apache24 の再起動の度にパスワードを要求されるらしい。
それはあまりに煩雑なので,パスワードなしのキーファイルを以下のようにして作る。
# openssl rsa -in private.key -out server.keyこのコマンドを入れると,以下のようにパスワードを聞かれるので入力すると「server.key」という秘密鍵ができる。
Enter pass phrase for private.key: writing RSA key ←パスフレーズ
次に「証明書署名要求(CSR; Certificate Signing Request)」を作る。 コマンドは以下の通り。
# openssl req -new -sha256 -key private.key -out server.csr実行すると,以下のようになる。 パスワードありの鍵を使っているので,パスワードを要求されている。 その他にもいろいろ聞かれる。赤字で書いた部分が入力した部分であるが,多くは ENTER のみでいいみたい。
Enter pass phrase for private.key: ←パスフレーズ 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) []:Minato-ku Organization Name (eg, company) [Internet Widgits Pty Ltd]:(enter) Organizational Unit Name (eg, section) []:(enter) Common Name (e.g. server FQDN or YOUR name) []:www.hogehoge.mydns.jp Email Address []:(enter) Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:(enter) An optional company name []:(enter)csr フィアルの中身の確認は以下のコマンドで可能らしい。
# openssl req -text < server.csr
最後に「サーバー証明書」を作ろう。 それには以下のコマンドを実行する。
# openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crtすると,以下のような表示がなされて,「server.crt」ファイルが出来上がる。
Signature ok subject=/C=JP/ST=Tokyo/L=Minato-ku/O=Internet Widgits Pty Ltd/CN=www.hogehoge.mydns.jp Getting Private key
念のために server.key ファイルと server.crt ファイルの permission を変更して,認証ファイルの作成は終了である。
# chmod 0400 private.key # chmod 0400 server.*
(2) apache24 の設定 次に apache24 の設定を行おう。
まずは /usr/local/etc/apache24/httpd.conf の設定を行う。 これもどっかのサイトを参考にしたので,細かい点はわかってなかったりする。
まずは,以下の4個のモジュールを有効にしておくらしい。
LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so LoadModule socache_dbm_module libexec/apache24/mod_socache_dbm.so LoadModule socache_memcache_module libexec/apache24/mod_socache_memcache.so LoadModule ssl_module libexec/apache24/mod_ssl.soここで「ssl」モジュールはわかるが,他のはなんで必要なんやろ?
次に,extra/httpd-ssl.conf の読み込み行をコメントアウトしておく。
# Secure (SSL/TLS) connections Include etc/apache24/extra/httpd-ssl.confssl の設定(https でのアクセスへの応答の設定)はこの httpd-ssl.conf ファイルで行う。
次に,その /usr/local/etc/apache24/extra/httpd-ssl.conf の設定を行う。 まずは,プロトコルの指定をしておこう。 どうやら「TLSv1.2」と「TLSv1.1」以外は危険らしいので,以下の2個だけを指定している。 いろんなサイトには他のも入れてあったりするが,古いのは危険らしい。
SSLProtocol +TLSv1.2 +TLSv1.1 SSLProxyProtocol +TLSv1.2 +TLSv1.1
次に,<VirtualHost _default_:443> の設定をしよう。
# General setup for the virtual host DocumentRoot "/usr/local/www/data" ← Web site のトップページのあるディレクトリ ServerName www.hogehoge.mydns.jp ServerAdmin email@address.com ErrorLog "/var/log/httpd-ssl-error.log" TransferLog "/var/log/httpd-ssl-access.log"
最後にサーバー証明書の指定をして出来上がりである。
SSLCertificateFile "/usr/local/etc/apache24/server.crt" SSLCertificateKeyFile "/usr/local/etc/apache24/server.key"今回は「/usr/local/etc/apache24/」でオレオレ証明書を作ったので,そこにファイルがあるとして指定している。
(3) httpd の再起動
最終的に apache24 を再起動して,アクセスして,それっぽくなっていれば出来上がりである。
service apache24 restartちなみに,最近(2017年3月時点)では,オレオレ証明書を使ったサイトは「危険なサイト」としてブラウザが警告を発する。 例えば Firefox なら「安全な接続ではありません」と言われたりする。 これはちゃんと接続できていることを示しているので,設定としてはうまくいっている。
もし「接続できません」と出れば,どこかの指定を間違っているので,https 化とは別の問題のはずである。
(その3)Let's Encrypt を使ったサーバー認証に続く
0 件のコメント:
コメントを投稿