CACert.orgで無料のSSLサーバを動かすメモ
とあるメールを書いているときに、既にexpireしているじゃん…と半年以上放置のサイトがあったので更新することにしました。
Apacheなどのサーバで自己認証局で動作させることは簡単にできます。
10年以上前からそんなページは作成していましたが、今更そんなことよりも
CAcert.org に登録を行って認証局ありのSSLのしてしまいましょう。何しろ費用が無料です。これだけで理由は十分じゃないですか。
期間は半年。半年ごとにロールしていけばずっと無料でSSLサーバが利用できます。
登録しよう
では、早速利用していくことにします。以前は全部英語だったのですけれど、既にほとんどが日本語で大丈夫なページになっているので、オーストラリアの本家サイトにアクセスしましょう。

はい。まずは英語のページです。右側にあるメニューの中に Translations というのがあるので、ここをクリックすると、
 |
=> |
出てきました。「日本語」。
クリックすると…はい。日本語になりましたね。 |
 |
あとは (1)アカウント登録を行って、(2)自分のドメインを登録し、SSL通信を行うための
(3)FQDN指定をし、(4)CSRを画面にコピーペーストしてあげれば作業は完了します。
この4つのどこまでちゃんとできるのかが微妙なところなのかも知れませんが、是非チャレンジしてみてください。
1.アカウント登録
これは、左のメニューの上部にある Join(日本語になったページでは「参加」)をクリックすることでこれをクリックしてみましょう。 |
 |
日本語で良かったですね…といいたいところですが、このページの上部には日本語になっていうない注意書きがあって、誰も和訳する提案をしていないようです。
まぁ、雰囲気でわかるでしょうけど、パスワードには名前とかメールアドレスなどと同じにすることなく、英字の大文字と小文字を少なくても1文字づつ、数字や記号などを含めて作成しましょうね〜みたいなことが書かれています。
記述は日本語ではなく、英語で入力します。IMEはoffにして入力を行いましょう。
ミドルネームやサフィックスの部分は空白のままで問題ありません。
5つの質問と答えは、自分で作成する自分だけがわかる内容を書きます。
たとえば、
1)1gatu? January
2)neko? Cat
3)getsuyou? Monday
4)map? chizu
5)waratte? iitomo
などのように忘れない答えとしておきます。
ちなみに、誰でもわかってしまうものだとアカウントを奪われることなどの危険性がありますのでパスワード同様にまともなものにしておく必要があります。(わたしはメモ帳に残してあります。既に意味のないことなんだけど) |
その後、登録したメールアドレスに認証用のURLがあり、これをクリックすると登録は完了します。
以降は、IDとパスワードにてログインができるようになります。 |
 |
2.ドメインの登録
新規でドメインの追加を選択します。 |
 |
自分のドメインを記述して、追加をクリック |
 |
そうすると、左のようなアドレスの選択が出てきます。いずれかのメールアドレスで受信ができるように設定して受信準備をしておきましょう。
わたしは sendmailなので virtusertableに加えて受信できるアドレスに転送するように記述しました。Email
Probeのメールが到着したら確認URLにクリックして処理は完了です。 |
ここまで来たら、今度は Apache側の作業を開始しましょう。
今回も FreeBSD 6.2-RELEASEで Apache 2.1系で導入を行います。
Apacheの設定と登録
FreeBSD でApacheの導入が完了していることを前提にメモを開始してしまうので、わからない人はつっこんでください。
(ツッコミ先がないけど)
(1)秘密鍵生成
[/usr/local/etc/apache2/ssl.key/example.jp.server.key]
# /usr/local/etc/apache2
# mkdir ssl.key ssl.crt
# chmod 700 ssl.key ssl.crt
# /usr/bin/openssl genrsa -rand /var/log/messages -des3 \
-out /usr/local/etc/apache2/ssl.key/example.jp.server.key 1024 54002 \
semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
....++++++
.............++++++
e is 65537 (0x10001)
Enter pass phrase for
/usr/local/etc/apache2/ssl.key/example.jp.server.key:*********
Verifying - Enter pass phrase for
/usr/local/etc/apache2/ssl.key/example.jp.server.key:*********
# cd ssl.key
# chmod 600 *
こんな感じで秘密キーはできあがり。パスフレーズは忘れないものをとりあえず付けておくようにしてください。
(後でパスフレーズレスにしますので、とりあえずなものでもいいです。ここでは
konekokko にしました)
(2)CSR(証明書申請データ)生成
[/usr/local/etc/apache2/ssl.key/example.jp.csr]
# /usr/bin/openssl req -new -key \
/usr/local/etc/apache2/ssl.key/example.jp.server.key \
-out /usr/local/etc/apache2/ssl.key/example.jp.csr
Enter pass phrase for \
/usr/local/etc/apache2/ssl.key/example.jp.server.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) [AU]:JP
State or Province Name (full name) [Some-State]:TOKYO
Locality Name (eg, city) []:CHIYODA
Organization Name (eg, company)
[Internet Widgits Pty Ltd]:CAcert Inc.
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:secure.example.jp
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
のように入力しました。
一瞬でできあがったと思います。CSRは、認証局(CA)に渡すものなので、これを
cat で表示させて、その内容を範囲コピーしておきます。
(私は Teraterm proで接続して作業しているので簡単にコピーペーストができます)
-----BEGIN CERTIFICATE REQUEST-----
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
-----END CERTIFICATE REQUEST-----
のような内容になっていたと思います。
3.CAcert.orgのサーバー証明書に登録
| 上記の内容を、ペーストします。 |
 |
ドメインの指定は、上記のCSRを作成する時に指定した
Common Name (eg, YOUR name)の部分に相当しますので、自動で登録されることになります。
サーバ証明書の新規作成をクリックします。 |
 |
下にCSRをペーストしてください。
と書かれている部分に、CSRの内容をそのままコピーします。
私は、CAcertの保証制度には協力していないので、詳細な情報は出ませんが、そもそもそんな情報を欲するようなユーザが利用する用途では用いていないので無視して大丈夫。
送信を選択すると、SSLにするFQDNが表示され、その先に進めると、キーができあがってきました。 |
-----BEGIN CERTIFICATE-----
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
1111111111111111111111111111111111111111111111111111111111111111
2222222222222222222222222222222222222222222222222222222222222222
3333333333333333333333333333333333333333333333333333333333333333
4444444444444444444444444444444444444444444444444444444444444444
5555555555555555555555555555555555555555555555555555555555555555
6666666666666666666666666666666666666666666666666666666666666666
77777777777777777777
-----END CERTIFICATE-----
|
左のような部分をコピーし、
/usr/local/etc/apache2/ssl.crtのexample.jp.server.crt
として、保存します。
(eeでもviでもいいので、これを新規で作成します)
それが完了したら、同ディレクトリにあるものを
# chmod 600 *
してキーの生成は完了です。 |
これだけですと、Apacheの開始時に毎回パスフレーズを求められるようになってしまいますので、これをあらかじめ解消して使うことにしています。
# cd /usr/local/etc/apache2/ssl.key
# mv example.jp.server.key example.jp.server.key.orig
# openssl rsa -in example.jp.server.key.orig -out example.jp.server.key
Enter pass phrase for example.jp.server.key.orig:*********
writing RSA key
# chmod 600 example.jp.server.key*
この作業で、欲しいSSLのキーファイルはすべてそろいました。 |
[ ssl.confの設定 ]
/usr/local/etc/apache2/ssl.conf
または、 /usr/local/etc/apache2/Includes 以下に作成した該当ドメインのファイルは
DocumentRoot "(ドキュメントルート)"
ServerName サーバ名:443
ServerAdmin admin@example.jp
ErrorLog /var/log/httpsd-error.log
TransferLog /var/log/httpsd-access.log
SSLCertificateFile /usr/local/etc/apache2/ssl.crt/example.jp.server.crt
SSLCertificateKeyFile /usr/local/etc/apache2/ssl.key/example.jp.server.key
や、
<VirtualHost IPアドレス:443>
ServerAdmin webmaster@example.jp
DocumentRoot /home/user01/example.jp
ServerName secure.example.jp:443
ServerAlias www.example.jp:443
ScriptAlias /cgi-bin/ /home/user01/example.jp/cgi-bin/
UserDir disabled
ErrorLog /home/user01/log/https-example-jp-error_log
CustomLog /home/user01/log/https-example-jp-access_log combined
DirectoryIndex index.html
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /usr/local/etc/apache2/ssl.crt/example.jp.server.crt
SSLCertificateKeyFile /usr/local/etc/apache2/ssl.key/example.jp.server.key
<Directory "/home/user01/example.jp">
AllowOverride FileInfo AuthConfig Limit
Options Includes SymLinksIfOwnerMatch execCGI
Order allow,deny
Allow from all
</Directory>
<Directory "/home/user01/example.jp/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
<FilesMatch "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</FilesMatch>
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog /home/user01/log/https-example-jp-ssl_request.log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
ように指定します。
/etc/rc.confには
apache2_enable="YES"
apache2ssl_enable="YES"
を入れておきましょう。
ページを参照して、確認すると128bitのSSLで接続されていることが確認できたと思います。 |
CAのルート鍵を登録
「信頼された証明書」として登録してしまい、IEでうるさいエラーが出ないようにしてしまおうと思います。
まず、
ここをクリックしてください。(これは利用するユーザが行う作業ですから、それぞれのサイトにページを設けるか、CAcert.org
の該当ページにリンクして作業をしてもらうべき内容です。)
それぞれのドメインのキーは半年間ごとに更新しなければなりませんが、登録したメールアドレスには、切れる前になるとこまめに更新を促す電子メールが届くようになります。いくつものドメインを登録してかまいません。更新はクリックするだけ。新しいキーをコピーペーストで
example.jp.server.crt に更新してあげればいいだけなので非常に簡単に利用していくことができます。
※本ページは、過去に作成されたページをベースに再作成されたものです。