web-dev-qa-db-ja.com

Ubuntu LinuxでサイトのSSL(https)をセットアップする方法-双方向SSL

私はウェブサイトを持っています、主な要件はhttpsを使用してそのウェブサイトを安全にすることです

クライアントが別のマシンからアクセスする場合、証明書がブラウザー設定でアップロードされている場合にのみ機能する必要があります。そうでない場合は、そのWebサイトへのアクセスを拒否する必要があります。誰でも私がこれを達成するのを助けることができます。

Ubuntu 14.04を使用しています。詳細が必要な場合はお知らせください

3
Rshrth

Apacheの公式ドキュメント( このリンク を参照)がこの主題について本当によくできていることを調整しています。

要するに、次のような結果になるはずです。

LoadModule ssl_module modules/mod_ssl.so

Listen 443
<VirtualHost *:443>
   DocumentRoot /var/www/yoursite/
   <Directory /var/www/yoursite/>
     AllowOverride All
     order allow,deny
     allow from all
   </Directory>

   ServerName www.example.com
   SSLEngine on
   SSLCertificateFile /path/to/www.example.com.cert
   SSLCertificateKeyFile /path/to/www.example.com.key

   SSLVerifyClient require
   SSLVerifyDepth 1
   SSLCACertificateFile /path/to/www.example.com.ca.crt
</VirtualHost>

上記に関するいくつかの詳細

  • LoadModule ...:SSL実装を含む適切なApacheモジュールをロードします
  • Listen 443:Apacheデーモンは標準のHTTPSポート443でリッスンします
  • DocumentRoot:サイトのファイルが存在する場所
  • ...:これはWebサイトのディレクトリのオプションの定義です(さらに多くのことがあります。ここで言及したものは、インターネット上のIPからのアクセスを許可する基本的なものです)。
  • ServerName:この名前を含むURLのみを提供します
  • SSLEngine on:このWebサイトでSSL機能を有効にします。
  • SSLCertificateFile:このサーバー用に作成された秘密鍵のX.509証明書のパス。
  • SSLCertificateKeyFile:このサーバー用に作成された秘密鍵へのパス。
  • SSLVerifyClient require:サーバーがクライアントに有効な証明書を要求するように強制します
  • SSLVerifyDepth 1:次の指示で言及されたCAによって直接署名される必要があります
  • SSLCACertificateFile:クライアントが使用する証明書に署名するCAのX.509証明書のパス。

証明書

サーバー用とクライアント用の多くの有効な証明書を取得する必要があります。

サーバー用
インストールOpenSSLツール、まだ完了していない場合:Sudo apt-get install openssl

このツールを使用すると、サーバーの秘密キーを作成できます。

openssl genrsa -des3 -out server.pass.key 2048

上記のコマンドは、パスワード付きの秘密鍵を作成します。サーバーによって自動的にロードするには、パスワードを削除する必要があります。

openssl rsa -in server.pass.key -out server.key

これで、ファイルに有効なサーバー秘密鍵があります。これは、SSLCertificateKeyFile Apacheディレクティブが指すファイルです。

この秘密鍵から、証明書署名要求(CSR)を作成します。

openssl req -nodes -new -key server.key -out server.csr

一連の要素(国、組織など)を入力するように求められます。最も重要なものは共通名(CN)であり、URLで使用されるWebサーバーのホスト名と一致する必要があります。したがって、私の例ではwww.example.comです。

次に、このCSRファイルを証明書プロバイダーに送信する必要があります。すべてのパブリックCAは適切です。彼らはあなたのリクエストを承認した後、あなたのサーバー用の有名なX.509証明書ファイルを送信します。このファイルは、SSLCertificateFile Apacheのディレクティブによってポイントされます。

クライアント用
クライアントにも有効な証明書を提供する必要があります。
クライアントのタイプ(Linux、Windows、MACなど)に基づいて、プロセスは異なる場合があります。

クライアント証明書については、CA登録のページにアクセスすることにより、すべての操作をWebブラウザーから直接実行できる場合があります。 Webブラウザーから直接行う場合、証明書がWebブラウザーの証明書DBに自動的に登録されていることを確認してください。

外部手段(Linuxのopensslなど)で行う場合は、Webブラウザーの証明書ストアに秘密鍵と証明書ファイルをインポートする必要があります。

8
Benoit