Tag Archives: CAcert

nginxでSSL/TLSを使う

今回はSSL(https)を使えるようにするような設定をnginxにしてみようと思います。

証明書の取得

本来はSECOMやVeriSign等に有料で証明してもらうのですが、今回は以前にも紹介したCACertを載せときます。

ということで、証明書の取得は省略します。とりあえず、サーバーの秘密鍵 server.key と サーバーの証明書 server.cer が手に入った事にします。

nginxに設定

nginxでの設定は簡単で、既存の設定をコピーして、80番ではなく443番に変更し、SSLを有効にしてサーバーの鍵・証明書のファイルを指定してあげるだけです。

ちょっとその部分だけ書いてみます。

server {
	listen   443 default_server ssl;
	server_name	_;
	ssl_certificate /keys/server.cer;
	ssl_certificate_key /keys/server.key;

	location / {
		この辺は適当に
	}
}

リバースプロキシとしてnginxとして使っている場合も同様です。

名前ベースのバーチャルホストを使っている場合

ドメイン名を複数つかってバーチャルホストを使っている場合もあると思います。SSLではアクセスされたサーバー名がわかる前に証明書を渡さなければならないので、名前ベースのバーチャルホストでSSLは利用できませんでした。

が、SNI(Server Name Indication)というプロトコル拡張ができたので、名前ベースのバーチャルホストでも可能になりました。(ブラウザによっては対応してません)

設定は簡単で、httpと同じくserver_nameを設定するだけです。

リバースプロキシとして使っている場合は、証明書を変えるために、バーチャルホストの数だけServerディレクティブを作ってあげてください。

 

 

CAcertから証明書をもらおう!(その0:紹介)

CAcertとはこちらの記事が詳しいですが簡単に言うと無料でX.509セキュリティ証明書を発行してくれる認証機関です。
CAcertロゴマーク
本来証明書は「Verisign」や「セコム」などに多くの費用を払わないともらえず、どうしてもその費用を払ってでもセキュリティを必要とするサーバー(本社と支店を接続したり、Amazonなどのネットショッピングサイト、あるいは銀行のネットバンキングなど)にしか導入できないものですが、CAcertボランティアによってすすめられている無料の認証局です。

もちろん上記のような本当にセキュアな通信が必要な場面では使えませんが、以前この投稿でApacheでSSLを有効にする際には「個人で勝手に作った認証局」から発行された(発行した?)「えせ証明書」を利用しましたが、それとは比較してはいけないぐらい十分すぎる証明書が頂け、利用できます。
Read more …