aug Lab

主にプログラミングの備忘録 あと趣味とか思った事 twitter: @auglish

opensslとsnakeoilでの証明書作成について比較をする

2/20

開発環境作成においてssl証明書が必要だったが、wikiに書かれていた方法が開発環境に本番の証明書を持ってきて使う、という危険極まりないものだったので自己証明書を使って代用することになった。"httpでいってしまえ” という案もあったが、開発時は楽でいいけど、HTTPSにしたら動かない問題とかありがちだったりするのでちゃんとhttpsで開発できる環境を整えた方がいいとのことから。

そのssl証明書の発行方法だが、幾つか手段があるみたいでopensslを使って発行する方法とssl-certで作成したsnekeoilを使う方法が見つかったので、それらの優位性などを比較してみる。

openssl

コマンドはこちら

$ openssl genrsa 2048 > server.key
$ openssl req -new -key server.key > server.csr
$ openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt

これで実行したディレクトリに

server.key -- 秘密鍵 server.csr --証明書署名要求 server.crt --サーバ証明書

が生成される。 2つめのコマンドを実行した時にいろいろ入力を求められるが、全部未入力でもちゃんと動いた。 大きな欠点は見つからないが、作ろうとしたディレクトリによっては書き込み権限を付与してやらないといけないのがちょっとめんどくさいかもしれない。

snakeoil

コマンドはこちら

 # apt-get install ssl-cert
 # make-ssl-cert generate-default-snakeoil

これで

/etc/ssl/private/ssl-cert-snakeoil.key --秘密鍵 /etc/ssl/certs/ssl-cert-snakeoil.pem --サーバ証明書

が発行される。 これだけでも特に問題はなかった。 思考停止でつくるにはsnakeoilを使う方法に軍配があがるように感じた。

余談だが、snakeoilの名前の由来はsnakeoilが「いかがわしい万能薬」という意味だからとのこと(http://www.hotfix.jp/archives/word/2005/word05-33.html)

結論

以上をふまえると、秘密鍵と証明書はどちらで作っても問題なく機能していたため、安定して同じディレクトリに秘密鍵と証明書が作られる、値の入力が必要ないの点からsll-certでsnakeoilを発行したほうが簡単に作れる。

正直sslに対する自分の知識がまだまだ浅いので、これを機会により深く身につけていくのはありだと思っている。

参考にしたHP