オレオレ証明書を作ってみようかと 実践3

先の投稿でCAを作って、そのキーで証明書にサインしたサーバ証明書を作りました。が、今日何気なくwebを眺めていると”SHA-1は廃止、これからはSHA-2を使いましょう”というような記事があり、ああそう言えば昨日作った証明書はSHA-1でのハッシュ値だったなあと。

ということで、作り直します。

1
2
$ sudo openssl genrsa 2048 > CA_private_key.pem
$ sudo openssl req -new -sha256 -key ./CA_private_key.pem -x509 -days 7300 > CA_selfsigned_Certificate.pem

という感じになりますか。

1
$ sudo openssl x509 -text < CA_selfsigned_Certificate.pem

で確認してみると、たしかにSHA256でハッシュが作られている、と書いてありました。

これでok。

SHA-1は2005年に脆弱性が問題になり、2010年までにSHA-2に移行するように要請されていたようです。で、何が問題かというと、webを読みかじったところによると、SHA-1でつくったハッシュは「あるファイルと同じハッシュになるファイルを作れる時間」が当初思っていたよりも速く(短い時間で)できることがわかったそうで、同じハッシュを持った違うファイルを作ることが比較的簡単に可能になります。そうすると、サインした証明書の中身をすげ替えてもわからない、ということが起こるようです。

ここらへんの周辺事情は検索すると山ほど引っかかるので、読み物としては面白いですね。

また、元々の鍵のクオリティを上げる(ランダム性を上げる?)ために、乱数をパラメタとして与える、というのもあるようです。

1
2
$ sudo openssl md5 /var/log/syslog* > rand.dat
$ sudo openssl genrsa -rand ./rand.dat -aes256 2048 > CA_private_key.pem

と言った感じです。syslogのファイルのMD5ハッシュ値を計算してそれを乱数の種にするように指定します。

さらに、鍵をAES256で暗号化する指定を入れています。

なんか、この暗号の世界はかなりな勢いで世代替わりがあるようですね。現在「最高性能」といわれているものが5年後には「廃止」になっているかもしれないです。
そういう意味でも、数年に一度ぐらいの間隔で証明書を作りなおすのもいいかもしれませんね。