サブドメインでオレオレ証明書を試してみた

メインサイトはさくらインターネットラピッドSSLにしたけれど、設定とかを試していく中でオレオレ証明書なるものの存在を知った。 どうせならコレも試してみたい。

と言うことで、サブドメインを作ってオレオレ証明書でSSL化してみたメモ。

最初に言っておくけど、オレオレ証明書ではFirefoxはそのサイトに素直にアクセスさせてはくれない。 例外として承認してあげないと駄目なので、メインとして使っている公開用のサイトで利用するのは避けた方が良いんじゃないかと思う。 無料のSSLもググると出てくるのでそれを使うか、11月にサービスが開始されるという下記のLet’s Encryptに期待したいところだ。

MozillaとCisco、Akamai、Electronic Frontier Foundation(EFF)、IdenTrust、およびミシガン大学の研究者たちが作った研究グループInternet Security Research Groupが、Webのドメインを持っている者なら誰もが無料で利用できる証明機関を創設 (TechCrunch

うん、楽しみですな。

さて、オレオレ証明書の作り方だけど、これはネットで調べればいくらでも出てくる。 その中でも単純そうだったので、下記の手順で作ってみた。

まず自分の秘密鍵を生成する。 このOREORE.2015.keyが秘密鍵ファイルだ。

$ sudo openssl genrsa 2048 > OREORE.2015.key

次に、秘密鍵(OREORE.2015.key)からCSR(OREORE.2015.csr)を生成する。 CSRとは署名要求(Certificate Signing Request)と呼ばれていて、自分が何者であるかの情報が書き込まれたファイルになる。

この時に、赤字のような情報をあれこれ入力しないといけない。 また、Common NameはSSL化したいサイト名なので、これを間違えると話にならない(笑

$ openssl req -new -key OREORE.2015.key > OREORE.2015.csr

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]:TOKYO
Organization Name (eg, company) [Default Company Ltd]:NA
Organizational Unit Name (eg, section) []:NA
Common Name (eg, your name or your server's hostname) []:OREORE.nakayan.jp
Email Address []:未入力

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:未入力
An optional company name []:未入力

最後に、自分の情報を記述したCSRファイルに、自分の秘密鍵で署名してできるのが公開鍵。 この行為が、ブラウザ等で指摘される自己署名と言われる作業になる。 運転免許証とかが無い人が本人確認された時に、オレがオレだって言ってるんだからオレなんだよ!って言うようなものか(笑

買ったSSLだと、この署名をブラウザ等に最初から登録されている大手の認証局か、その下請け孫請け会社がやってくれるので、ちゃんと身元保証されたファイルだってことになる。

$ openssl x509 -days 3650 -req -signkey OREORE.2015.key < OREORE.2015.csr > OREORE.2015.crt

この一連の作業で、次の3種類のファイルが作られる。 SSLを使うためにサーバに設定するのは1と3だけ。

  1. OREORE.2015.crt (公開鍵ファイル)
  2. OREORE.2015.csr (自分の情報を記述したCSRファイル)
  3. OREORE.2015.key (秘密鍵)

Nginxの設定ファイルがあるディレクトリか、SSLの設定ファイルを置いてあるディレクトリにコピーする。

$ sudo cp OREORE.2015.* /etc/nginx/

サブドメインは下記のように設定することで、HTTPSでのアクセスが可能になる。 ただし、初回アクセス時には例外を追加してあげないとアクセスできない。

server {
    listen 443 ssl;
    server_name OREORE.nakayan.jp;
    root /var/www/demossl;
    index  index.php;

    ssl_certificate      /etc/nginx/OREORE.2015.crt;
    ssl_certificate_key  /etc/nginx/OREORE.2015.key;
}

SSLってものが何者なのか、どうすれば導入できるのか、だいぶ理解が深まった気がする。 技術系サラリーマンの端くれとして、この先も日々勉強を怠らぬようにしよう。

って言うかさ、こういうのって本当に楽しい。

All original content on these pages is fingerprinted and certified by Digiprove