あーかいぶすハイディフィニション

ここはもう更新しとらんのじゃ

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@ドメイン