「SSL」カテゴリーアーカイブ

WindowsのIEで証明書を取り込む

WindowsのIEでSSLアクセス(https)を行おうとするとセキュリティの警告が表示されるときがある。ちゃんとした認証局から証明書を発行してもらっていないサイト(ここのような個人サイトとか)からなんちゃって証明書を送られたときに発生することが多いと思うけど、普通は「続行しますか?」と聞かれて「はい(Y)」を押していると思う。

でも、これってアクセスするたびに表示されるからうっとうしい。たとえ証明書はなんちゃってでも素性が分かっているもの/サイトであれば証明書を取り込むことで2度目以降のアクセスからは、この警告が表示されなくなる。

取り込み方は、セキュリティの警告ダイアログボックスの証明書の表示(V)ボタンを押して、続いて表示されるダイアログボックスの証明書のインストール(I)…ボタンを押すだけ。証明書のインポートウィザードが立ち上がるけど、適当にはいとか次へとか押していると完了する。

証明書がある要件を満たさないとこの警告が再度表示されるんだけど、セキュリティ証明書の名前が無効であるか、またはサイト名と一致しません。が原因で、自分のサイトの自分が発行したなんちゃって証明書ならWindowsで警告のでないSSLの設定で解決できるかもしれない。

Windowsで警告のでないSSLの設定

FC3ではSSLが導入済みで設定ファイルをちょこちょこっといじるだけですぐに使えるようになっている。

でも、SSLを用いてhttpsでアクセスすると警告が表示される。Windowsでは証明書を取り込むと2度目からは警告がでないはずだけど、てきとーに設定した(FC3でデフォルトで設定されている)証明書では取り込んでも再び警告が出される。「セキュリティ証明書の名前が無効であるか、またはサイト名と一致しません。」で引っかかる。そこで、正しい証明書を作って、SSLを有効にしてみよう。といってもほとんどここに書いてあるとおりのことをやっているだけだけど。

/etc/httpd/confディレクトリにて、# make server.keyと入力してサーバー用秘密鍵を作成する。
Enter pass phrase:と聞き返されるので、適当なパスワードを打ち込む。さらに、Verifying - Enter pass phrase:もう一度打ち込む。

Apache起動時にパスワードを要求されないようにサーバー用秘密鍵からパスワードを削除するといいらしい。ここはだまって従おう。# openssl rsa -in server.key -out server.keyと入力すると、Enter pass phrase for server.key:と聞き返されるので、上でいれたパスワードを打ち込む。

続いてサーバ用公開鍵を作成する。# make server.csrと入力すると以下のような質問をされるので、以下のように答える。Country Name (2 letter code) [GB]:JP ← 日本ならば必ず"JP"にする
State or Province Name (full name) [Berkshire]:Tokyo ← 都道府県(適当に)
Locality Name (eg, city) [Newbury]:Chiyoda ← 市町村名(適当に)
Organization Name (eg, company) [My Company Ltd]:Hogehoge Co Ltd ← 組織名(適当に)
Organizational Unit Name (eg, section) []:IT Section ← 部署名(適当に)
Common Name (eg, your name or your server's hostname) []:www.hogehoge.com ← [重要!!]ホスト名をFQDNで入力する!ここがFQDNでなかったり、URLとは違っていたりするとWindowsで警告がでる。
Email Address []:webmaster@hogehoge.com ← 管理者メールのアドレス
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ← 無し(Enter)
An optional company name []: ← 無し(Enter)

次にサーバー用証明書を作成する。# openssl x509 -in server.csr -out server.pem -req -signkey server.key -days 3650最後の3650は証明書の有効期間(日数)で、おおよそ10年間にしてみた。# chmod 400 server.*とパーミッションを設定し、所有者(root)のみ参照できるようにする。

最後にSSL設定ファイル(/etc/httpd/conf.d/ssl.conf)を編集する。編集する前にバックアップをとっておこう。そしてお好みのエディタでconfファイルを開いて、以下の点を修正する。
サーバー用証明書の設定SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt

SSLCertificateFile /etc/httpd/conf/server.pem

サーバー用秘密鍵の設定SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key

SSLCertificateKeyFile /etc/httpd/conf/server.key

もろもろの設定
#DocumentRoot "/var/www/html"

DocumentRoot "/var/www/html" ← コメント解除
#Server www.example.com:443

Server www.hogehoge.com:443 ← コメント解除&ホスト名の設定

後はapacheを再起動するだけ。おっと、ルータのフィルタリング設定で443ポートを開けておくことを忘れずに。