今回はssl更新の記事です。
インフラの方々は作業されたことがあると思いますが私は初挑戦です!
macで作業します。
バージョンを確認
[astel@astel-no-MacBook-Pro ] $ openssl version OpenSSL 0.9.8zg 14 July 2015
秘密鍵作成のための乱数ファイルを生成します。
[astel@astel-no-MacBook-Pro ] $ dd if=/dev/urandom of=rand.dat bs=1k count=4 4+0 records in 4+0 records out 4096 bytes transferred in 0.000492 secs (8327615 bytes/sec) [astel@astel-no-MacBook-Pro ] $ ls rand.dat
作成した乱数ファイルから秘密鍵を生成します。
途中で秘密鍵のパスワードを入力します。
[astel@astel-no-MacBook-Pro ] $ openssl genrsa -rand rand.dat -des3 2048 > private_key.pem 4096 semi-random bytes loaded Generating RSA private key, 2048 bit long modulus ..........+++ .......+++ e is 65537 (0x10001) Enter pass phrase: (パスワード入力 Verifying - Enter pass phrase: (もういちど入力 [astel@astel-no-MacBook-Pro ] $ ls private_key.pem rand.dat
CSRを作成します。
[astel@astel-no-MacBook-Pro ] $ openssl req -new -key private_key.pem -out csr.pem Enter pass phrase for private_key.pem: (上記で入力した秘密鍵のパスワードを入力 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]:JP State or Province Name (full name) [Some-State]:Tokyo Locality Name (eg, city) []:Shinjuku-ku Organization Name (eg, company) [Internet Widgits Pty Ltd]:Maverick Inc. Organizational Unit Name (eg, section) []:Development Common Name (e.g. server FQDN or YOUR name) []:*.mvrck.co.jp Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: [astel@astel-no-MacBook-Pro ] $ ls csr.pem private_key.pem rand.dat
作成したCSR(csr.pem)を申請サイトへ貼り付けて申し込みます。
今回発行されたSSL証明書を_.mvrck.co.jp.crt
と名前を変えてサーバへ設置していきます。
対象サーバは全てnginxで動いてます。設定を見てみましょう。
$ grep ssl_certificate /etc/nginx/conf.d/mvrck.conf ssl_certificate /etc/ssl/nginx/_.mvrck.co.jp.crt; ssl_certificate_key /etc/ssl/nginx/_.mvrck.co.jp.key;
ふむふむ /etc/ssl/nginx/
以下に置かれているようですね。
ここで_.mvrck.co.jp.key
なんて作ってないぞ と思いましたがssl_certificate_key
... なるほど 秘密鍵??
疑問に思いながら最初の方に作成した秘密鍵 private_key.pem をリネームして設置しました。
$ mv private_key.pem _.mvrck.co.jp.key
また権限がnginxにしないとうまいこと動いてくれなかったのでchown nginxで設定します。
よしこれでとりあえず$ nginx -t
で確かめてみよう!
$ nginx -t Enter PEM pass phrase:
秘密鍵の入力を求められました。パスワードを入力して
syntax is ok test is successful
と設定自体はよさそう。restartさせてみる。
$ /etc/init.d/nginx restart * Checking nginx' configuration ... Enter PEM pass phrase: [ ok ] * Stopping nginx ... [ ok ] * Starting nginx ... Enter PEM pass phrase:
と,これでweb上で確認するとしっかり更新されていました!
このEnter PEM pass phrase:
ですが毎回入力せずにも設定できるようです。
例としてパスフレーズを聞かれないようにするには
$ openssl rsa -in private_key.pem -out _.mvrck.co.jp.key Enter pass phrase for private_key.pem: writing RSA key
とすることで_.mvrck.co.jp.key
というパスフレーズなしのkeyが作成されます。
設置し直して$ nginx -t
等で試してみるとパスフレーズなしでもできました。
私はweb上でssl証明書をみて更新されていると確認したのですがcuiでも出来るよということで教えてもらいました。
$ openssl s_client -connect www.mvrck.co.jp:443 < /dev/null 2> /dev/null | openssl x509 -noout -startdate -enddate
これで無事更新完了です。
無事といいつつ実はCommon Nameを間違えて発行して色々あったのですがそれはまた別のお話.....