SSL 証明書を作りたかったんだよ!
づぐりだいっ!
秘密鍵の生成
仮に /etc/ssl としていますが、僕は普段 /etc/(httpd|nginx)/ssl_cerfiticate/YYYY/ みたいな感じで年度ごとにファイルをまとめてます。
- key
- csr
- crt
- ca
- 必要であれば復号用パスワードを記載したファイル(これやる位なら key file にパスワード書き込む方がいい)
[root@localhost ~]# cd /etc/ssl [root@localhost ssl]# openssl genrsa -des3 -out ./SSLFILE.key 2048 Generating RSA private key, 2048 bit long modulus なんかしてる Enter pass phrase for SSLFILE.key: <なんかパスフレーズいれる> Verifying - Enter pass phrase for SSLFILE.key: <確認の為、パスフレーズ再入力>
csr の生成
SSL 証明書は、ウェブサイトの所有者 ( 会社/個人 ) を証明します。という訳で各種項目は、所有者の所在地のものを入力します。会社なら会社の所在地や。
ちなみに
- Email Address []:
- A challenge password []:
- An optional company name []:
これらは入力する必要がないです、enter おして空のままでおk。
[root@localhost ssl]# openssl req -new -sha256 -key ./SSLFILE.key -out ./SSLFILE.csr Enter pass phrase for ./SSLFILE.key: <秘密鍵生成時に使ったパスワード> 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]: <組織が所属する市区町村名、( Arakawa-ku ) など> Organization Name (eg, company) [Default Company Ltd]: <組織の名称、普通は会社名 ( ShinNipporiKensetsuCorporation ) だな!> Organizational Unit Name (eg, section) []: <組織内の部署名、それこそ Sales とかでいい> Common Name (eg, your name or your server's hostname) []: <証明書を運用するドメイン名、サブドメインまで厳密に一致させられるから注意な!> Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
さらっと書きましたが、例えば
は、サブドメイン www. が付いているか否かで SSL 証明書は別物になります。この場合、Common Name に「www.example.com」と書いていればそれ以外のドメインは証明書不一致になる……はず。
申請前に確認
CSR の中身に書き込んだ情報を確認します。大丈夫そうなら申請しにいきましょ。
[root@localhost ssl]# openssl req -noout -text -in ./SSLFILE.csr Certificate Request: Data: Version: 0 (0x0) Subject: C=JP, ST=Tokyo, L=Arakawa-ku, O=ShinNipporiKensetsuCorporation, OU=Sales, CN=www.example.com Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: なんかなげーの以下略 Signature Algorithm: sha256WithRSAEncryption 以下略
ちゃんと 2048bit/SHA-2 (256bit) で作成されてますね!
そもそもあんでこんなめんどい……
SHA-1 がハッシュ値短くてあぶねえ!ってメリケンの人偉い人が大々的に宣伝し始めたからです。
- SHA-1: 160bit
- SHA-2: 224bit / 256bit / 384bit / 512bit
将来的には SHA-2 512bit とか推奨されるのかもしれませんが、今のところ証明書発行の各社、SHA-2 256bit で構わないと言っているので、そのようにそておきましょう。
まとまってんのはこのあたりでしょう!
SSLサーバー証明書 : SHA-1 証明書の受付終了と SHA-2 証明書への移行について|Cybertrust.ne.jp
ちなみに
WHOIS で確認できるドメイン管理者メールアドレス 汎用JP(.jp)ドメインの場合は、公開連絡窓口のメールアドレス (ジオトラスト社システムの関係で使用できない場合があります) コモンネームで指定したドメインの以下のメールアドレスのいずれか admin@ドメイン administrator@ドメイン hostmaster@ドメイン webmaster@ドメイン postmaster@ドメイン