OpenSSL1.1.1が2018年9月よりリリースされ、passwdオプションの種類も増えていたのを最近知った。
passwdオプション
passwdオプションはパスワード用の書式としてハッシュ化するためのオプションになります。
基本的な書式は
$【バージョン】$XXXXXXXXXXX
$【バージョン】$【ソルト文字】$XXXXXXXXX
$ 【バージョン】$rounds=【ストレッチ数】 $【ソルト文字】$
になります。(最後の書式はOpenSSLではできないですが…)
OpenSSL1.1.0g
[root@local bin]# ./openssl passwd --help
Usage: passwd [options]
Valid options are:
-help Display this summary
-in infile Read passwords from file
-noverify Never verify when reading password from terminal
-quiet No warnings
-table Format output as table
-reverse Switch table columns
-salt val Use provided salt
-stdin Read passwords from stdin
-apr1 MD5-based password algorithm, Apache variant
-1 MD5-based password algorithm
-crypt Standard Unix password algorithm (default)
OpenSSL1.1.1b
[root@local bin]# ./openssl passwd --help
Usage: passwd [options]
Valid options are:
-help Display this summary
-in infile Read passwords from file
-noverify Never verify when reading password from terminal
-quiet No warnings
-table Format output as table
-reverse Switch table columns
-salt val Use provided salt
-stdin Read passwords from stdin
-6 SHA512-based password algorithm
-5 SHA256-based password algorithm
-apr1 MD5-based password algorithm, Apache variant
-1 MD5-based password algorithm
-aixmd5 AIX MD5-based password algorithm
-crypt Standard Unix password algorithm (default)
-rand val Load the file(s) into the random number gen
SHA256とSHA512が使えるようになってる!
使ってみた
[root@local bin]# ./openssl passwd -5 -salt test test
$5$test$mE81Hk6jfF7kPRvM6bmJqs2BJ3jxWduOAHAwURD2Ev9
SHA256でハッシュ化できるようになりましたね。これで毎回pythonとかperl、php経由でハッシュ化したパスワードの確認をしなくてもよくなるかも。
雑感
CentOS6だとgrub-cryptで使えてたけどCentOS7からなくなったので代替案として使えるかもですね。(既にインストールされているOpenSSLと共同で使えるようにしないといけないなど少しめんどくさいところはあるが・・・)
あとは、OpenSSLでもストレッチングはできないですね。なくても問題ないといえばないですが、作るのならついでに入れてくれてもよかったのでは?と思いました。(ほかのオプションでは 「iter」でストレッチングができるようになったので)
ストレッチングなどいろいろ行いたいならば、OpenLDAPを使った方法もありますが…PHPやPythonで十分ですね。