make then make install
インターネット上のSSLの主な機能は、webブラウザがwebサイトの信頼性を検証できるようにする暗号化と信頼を容易にすることです。 クライアントSSL証明書を使用して、クライアントをwebサーバーに認証することができます。 よく知られている場合は、SSH公開鍵と秘密鍵のペアを考えてください。 このブログ記事では、認証局証明書を作成し、サーバー証明書に署名してApacheにインストールし、webブラウザで使用される形式でクライアント証明書を作成す
オペレーティングシステムとApacheのインストールはブログ記事の範囲外であり、始める前にApacheのインストールが機能していると仮定します。 私はこのブログ記事でUbuntu12.04.4システムを使用しています。
認証局(CA)証明書の生成
最初のステップは、CA証明書を生成することです。 このCA証明書は、WEBサーバー上で生成する必要はありません–SSL証明書を生成するために使用するマシンに置くことができます。 CA証明書が作成されると、サーバー証明書とクライアント証明書の両方の信頼できる機関として機能します。 SSLの現実の世界ではVerisignまたはComodosに相当しますが、信頼がどこのブラウザにも組み込まれないため、主要な公開webサイトにCA証明書を使用することは
次のコマンドを使用してCA証明書を生成します:
openssl req -newkey rsa:4096 -keyform PEM -keyout ca.key -x509 -days 3650 -outform PEM -out ca.cer
その後、それらを秘密にしてください-それらを安全に保ちます。 誰かがこれらのファイルを保持すると、以下で構成されるように、webサーバーによって信頼されるサーバー証明書とクライアント証明書を生成できます。
ApacheサーバーのSSLキーと証明書を生成します
CA証明書ができたので、Apacheが使用するSSL証明書を生成できます。
- サーバーの秘密鍵を生成します。
openssl genrsa -out server.key 4096
- サーバーの秘密鍵を使用して証明書生成要求を生成します。
openssl req -new -key server.key -out server.req -sha256
- サーバー証明書を生成するには、証明書生成要求とCA証明書を使用します。
openssl x509 -req -in server.req -CA ca.cer -CAkey ca.key -set_serial 100 -extensions server -days 1460 -outform PEM -out server.cer -sha256
- クリーンアップ–証明書が作成されたので、要求は不要になりました。
rm server.req
Apache
にサーバー証明書をインストールします私のサーバーはUbuntu12.04.4を実行しているので、ここで参照されるすべてのパスとコマンドはそのオペレーティン
- CA証明書を永続的な場所にコピーします。 Ca証明書は自己生成CAであり、どこのオペレーティングシステムにも含まれているCAではないため、ApacheでCA証明書を指定する必要があります。
cp ca.cer /etc/ssl/certs/
- サーバー証明書と秘密鍵を永続的な場所にコピーします。
cp server.cer /etc/ssl/certs/server.crtcp server.key /etc/ssl/private/server.key
- ApacheでSSLモジュールを有効にします。
a2enmod ssl
- ApacheでSSLサイトを有効にし、HTTPサイトを無効にします。
a2ensite default-ssla2dissite default
- /etc/apache2/sites-enabled/000-default-ssl(SSLが有効なサイトの設定ファイル)を編集して追加します:
SSLCACertificateFile /etc/ssl/certs/ca.cerSSLCertificateFile /etc/ssl/certs/server.crtSSLCertificateKeyFile /etc/ssl/private/server.key
- Apacheで設定を適用します。
service apache2 restart
現在、httpsサイトにアクセスすると、”SSL peer was unable to negotiate an acceptable set of security parameters”のようなSSLエラーが表示されます。”それは良いことです–それはあなたのブラウザが信頼できるクライアント証明書を使用していない限り、あなたのサイトが接続を受け入れないこ 今すぐ生成します。
クライアントSSL証明書の生成
- SSLクライアントの秘密鍵を生成します。
openssl genrsa -out client.key 4096
- クライアントの秘密鍵を使用して証明書要求を生成します。
openssl req -new -key client.key -out client.req
- 証明書要求とCA証明書/キーを使用してクライアント証明書を発行します。
openssl x509 -req -in client.req -CA ca.cer -CAkey ca.key -set_serial 101 -extensions client -days 365 -outform PEM -out client.cer
- ブラウザで使用するために、クライアント証明書と秘密鍵をpkcs#12形式に変換します。
openssl pkcs12 -export -inkey client.key -in client.cer -out client.p12
- クリーンアップ–pkcs12に必要なものがすべてあるため、クライアント秘密鍵、クライアント証明書、およびクライアント要求ファイルを削除します。
rm client.key client.cer client.req
サーバー証明書を生成するのとかなり似たプロセスのように見えますか?
お使いのブラウザにp12ファイル。 Windowsでは、ファイルをダブルクリックして、IEとChromeで使用されるオペレーティングシステムのキーストアにインポートできます。 Firefoxの場合、オプション->詳細設定->証明書->証明書の表示->証明書を開き、証明書をインポートします。
さて、クライアント証明書をインポートしたブラウザであなたのウェブサイトにアクセスします。 使用するクライアント証明書の入力を求められる可能性があります–それを選択します。 その後、あなたは認証され、許可されます!