FileShelf Plus FTPS対応版の動作確認をした際に、自己署名入りサーバ証明書を作成しましたので、その手順を記録しておきます。
SSLサーバ証明書と言えば、SHA-1署名アルゴリズムの脆弱性が新たに発覚したことから、各認証局では昨年12月頃からSHA-1証明書の新規発行を停止しており、SHA-1で運用中のサイトについても、SHA-2証明書への移行を促しています。
SHA-1証明書を使用し続けていると、2016年からアドレスバーに警告表示がされるようになり、2017年以降はSSL通信が拒否されることになります。
ちなみに、SHA-1の利用を廃止してSHA-2に移行しなければならないのは、ルート証明書更新プログラムに参加している証明機関(CA)から発行されている証明書となっています。
個人や社内で利用しているプライベート認証機関はこの措置の対象ではないので、つまり自己署名入り証明書・通称オレオレ証明書は対象外ということになります。
ということなのですが、新たに自己署名入り証明書を作成するのでSHA-2証明書を作成することにします。
秘密鍵の生成
openssl genrsa -aes128 -out mycert_key.pem 2048
genrsa RSA形式の秘密鍵を作成する
-aes128 128ビットAES方式で暗号化する
2048 2048ビットの鍵にする
Generating RSA private key, 2048 bit long modulus ......+++ ..........................................+++ e is 65537 (0x10001) Enter pass phrase for mycert_key.pem: Verifying - Enter pass phrase for mycert_key.pem:パスフレーズを入力する(*1)
出力されたファイルmycert_key.pem(*2)の内容は
-----BEGIN RSA PRIVATE KEY----- ............................... -----END RSA PRIVATE KEY-----
CSRの作成
CSR(Certificate Signing Request)とは、SSL証明書を作成する元になる情報(組織名、サーバーアドレスなど)です。
openssl req -new -key mycert_key.pem -sha256 -out mycert_csr.pem
req CSRファイルを作成
-new 新規にCSRを作成する
-key *2の秘密鍵ファイルを指定する
-sha256 署名ハッシュアルゴリズムとして SHA-2 を使用する。
Enter pass phrase for mycert_key.pem:*1のパスフレーズ 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) [XX]:JP ...国名 State or Province Name (full name) []:Tokyo ...都道府県名 Locality Name (eg, city) [Default City]:XXXXX ...市町村名 Organization Name (eg, company) [Default Company Ltd]:XXXXX ...組織名 Organizational Unit Name (eg, section) []:XXXXX ....部門名 Common Name (eg, your name or your server's hostname) []:fileshelfplus.com ...サイトの名前 Email Address []:何も入れずにEnter Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:何も入れずにEnter An optional company name []:何も入れずにEnter
出力されたファイルmycert_csr.pem(*3)の内容は
-----BEGIN CERTIFICATE REQUEST----- ................................ -----END CERTIFICATE REQUEST-----
証明書(公開鍵)の作成
CA(認証局)が発行した証明書に相当する自己デジタル証明書になります。
openssl x509 -req -days 365 -sha256 -in mycert_csr.pem -signkey mycert_key.pem -out mycert_crt.pem
x509 X.509 形式の証明書を作成
-req CSRファイルを入力し署名して出力する
-days 証明書の有効期限を日数で指定する
-sha256 署名アルゴリズムとして SHA-2 を使用する
-in *3のCSRファイルを指定する
-signkey *2の秘密鍵ファイルを指定する
Signature ok subject=/C=JP/ST=Tokyo/L=XXXXX/O=XXXXX/OU=XXXXX/CN=fileshelfplus.com Getting Private key Enter pass phrase for mycert_key.pem:*1のパスフレーズを入力する
出力されたファイルmycert_crt.pemの内容は
-----BEGIN CERTIFICATE----- ................................ -----END CERTIFICATE-----
証明書(公開鍵)を確認してみる
openssl x509 -text < mycert_crt.pem
Certificate: Data: Version: 1 (0x0) Serial Number: 10104994516558139701 (0x8c3c26f968b7d135) Signature Algorithm: sha256WithRSAEncryption Issuer: C=JP, ST=Tokyo, L=XXXXX, O=XXXXX, OU=XXXXX, CN=fileshelfplus.com Validity Not Before: Jan 2 08:49:09 2016 GMT Not After : Jan 1 08:49:09 2017 GMT Subject: C=JP, ST=Tokyo, L=XXXXX, O=XXXXX, OU=XXXXX, CN=fileshelfplus.com Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:c6:a9:df:d8:5c:2d:2c:50:c7:bd:55:f5:1f:e8: ............................................. Exponent: 65537 (0x10001) Signature Algorithm: sha256WithRSAEncryption 63:a3:10:93:df:1a:00:73:b4:9e:f1:9c:92:60:86:e6:76:ca: ...................................................... -----BEGIN CERTIFICATE----- MIIDbDCCAlQCCQCMPCb5aLfRNTANBgkqhkiG9w0BAQsFADB4MQswCQYDVQQGEwJK ................................................................ -----END CERTIFICATE-----
SHA-2自己署名入りサーバ証明書が出来ました。
環境
CentOS release 6.5 (Final)
OpenSSL 1.0.1e-fips 11 Feb 2013