テスト用のSSL

テスト用のSSL環境を作らないと、SSL関連の開発もままならないな・・・
と、言う事で作ってみた。
ApacheにOpenSSLをインストールする必要があるのかな~っと、
google先生に聞いてみたら、どうやらxamppに同梱されているとのこと。
確かにbinフォルダにopenssl.exeってのがいる。
そこで、手順に従って秘密鍵を作成してみた。

参考にしたのは、こちらのサイト
Life is Real.
こちらも参考にさせていただきました。
小粋空間

openssl genrsa -rand charset.conv -out server.key 1024

で秘密鍵を作成。
できたできた。なんだ楽勝じゃん。と、調子に乗って、
公開鍵を作成しようとしたら・・

openssl req -new -key server.key -out server.csr -config ..openssl.cnf
Unable to load config info from /usr/local/ssl/openssl.cnf

げ。
なんだかopenssl.cnfが見つからないって感じのエラーが出やがる。
みてるパスがおかしいんだろうなぁってcnfファイルを探すけど見つからない。
apache配下を検索すれども見つからない。
なんで、exeはあるのにcnfファイルがないんだろうってな事で、
またもやgoogle先生に泣きついてみると、
同じようなことで悩んでる人がいた。
その人はopensslを別でダウンロードして、必要なファイルだけコピーしたって・・
なんか強引じゃね?
しかも、解決できてない問題もあるっぽぃ。

30分くらい悩んだところで、
念のためにと、apacheフォルダではなくxamppフォルダでopenssl.cnfを検索したところ・・・
あった!!!
なんと、phpextrasにいやがった。
試しにそのファイルを利用して、再度チャレンジ。

OpenSSL> req -new -config C:xamppapacheopensslopenssl.cnf -key server.key -o
ut csr.pem -sha1
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]:(国コード)
State or Province Name (full name) [Some-State]:(都道府県名)
Locality Name (eg, city) []:(市区町村名)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:(組織名)
Organizational Unit Name (eg, section) []:(組織内ユニット名)
Common Name (eg, YOUR name) []:(アクセス名[http://アクセス名])
Email Address []:(管理者メールアドレス:オプション)
 
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 csr.pem -out server.crt -req -signkey server.key -days 365 -sha1
Loading 'screen' into random state - done
Signature ok
subject=/C=JP/ST=Chiba/L=Ichikawa/O=Apache Friends/OU=XAMPP for Windows/CN=local
host

apacheのhttpd-ssl.confを修正して・・・
apacheを再起動。

・・あれ、立ち上がんね。
こうして、夜も更けていく・・・。

結局、立ち上がらなかったのはhttpd.confの修正が間違ってた。
デフォルトだとconfextraを見てるのね。
でも、よくよく見ると証明書やらhttpd-ssl.confやら既に用意されてるっぽぃ。
もしかして、何もしなくてもssl使えたんじゃないか???

さて、apacheの起動をして、https経由でアクセスすると・・・
「証明書が信用できないエラー」が出る。
ま、そらそうだ。
強制的に信用するよう、firefoxを説き伏せて、再度アクセス!
今度は表示する権限が無いってさ。
httpsだと、httpd.confのアクセス許可の書き方が違うのかね。
いったん、のディレクティブをAllow from allに変更してみる。
んー、、、メッセージは変わったけど、言ってる事は変わんないな。

もっぺん、google先生に聞いてみるか。
お、httpd-ssl.confの中にもDocumentRootの設定があるっぽぃ。
そういや、DocumentRootの場所、いじったっけな。
ここも直して・・。

無事に、httpdsで接続できた!!

機会を見て、元々用意されていたssl環境に戻してみよう。

コメント

タイトルとURLをコピーしました