Secure Socket Layer (SSL) は、Web サーバーと Web クライアント (ブラウザー) 間のデータ ストリームを暗号化するために使用されます。
SSL は、一般に公開キー暗号化 (PKI) と呼ばれる、非対称暗号化として知られるものを利用します。公開キー暗号化では、公開キーと秘密キーの 2 つのキーが作成されます。いずれかのキーで暗号化されたものは、対応するキーでのみ復号化できます。したがって、メッセージまたはデータ ストリームがサーバーの秘密キーで暗号化されている場合、対応する公開キーを使用してのみ復号化でき、データがサーバーからのみ送信されたものであることが保証されます。
信頼できる認証局 (CA) によって署名された Apache ssl 証明書により、証明書の所有者が実在の個人または組織であることが保証されます。信頼できる署名付き証明書がなければ、データは暗号化される可能性がありますが、通信相手はあなたが思っている相手ではない可能性があります。 Apache SSL 証明書がなければ、なりすまし攻撃がさらに一般的になります。
openssl ツールキットは、RSA 秘密キーと CSR (証明書署名要求) を生成するために使用されます。また、テスト目的または内部使用に使用できる自己署名証明書を生成するために使用することもできます。
ステップ 1: 秘密キーを生成する
最初のステップは、RSA 秘密キーを作成することです。このキーは 1024 ビット RSA キーで、Triple-DES を使用して暗号化され、ASCII テキストとして読み取れるように PEM 形式で保存されます。
openssl genrsa -des3 -out サーバー.キー 1024
RSA 秘密キー、1024 ビット長モジュラスの生成
.........................................................++++++
........++++++
e は 65537 (0x10001)
PEM パスフレーズを入力してください:
パスワードを確認しています - PEM パスフレーズを入力してください:
ステップ 2: CSR (証明書署名要求) を生成する
秘密キーが生成されると、証明書署名要求を生成できます。 CSR は 2 つの方法のいずれかで使用されます。理想的には、CSR は Verisign などの認証局に送信され、認証局が要求者の身元を確認し、署名付き証明書を発行します。 2 番目のオプションは CSR に自己署名することです。これについては次のセクションで説明します。
CSR の生成中に、いくつかの情報の入力を求められます。これらは証明書の X.509 属性です。プロンプトの 1 つは「共通名 (例: あなたの名前)」です。このフィールドには、SSL で保護されるサーバーの完全修飾ドメイン名を入力することが重要です。保護対象の Web サイトが https://yourdomain.com、このプロンプトで「yourdomain.com」と入力します。 CSR を生成するコマンドは次のとおりです。
openssl req -new -keyserver.key -outserver.csr
国名(2文字コード) [GB]:IN
州名 (フルネーム) [バークシャー]:カルナータカ州
地域名 (例: 都市) [ニューベリー]:バンガロール
組織名 (会社など) [My Company Ltd]:会社名
組織単位名 (セクションなど) []:情報技術
一般名 (例: あなたの名前またはサーバーのホスト名) []:yourdomain.com
メールアドレス []:[email protected]
次の「追加」属性を入力してください
証明書リクエストと一緒に送信されます
チャレンジパスワード []:
オプションの会社名 []:
ステップ 3: キーからパスフレーズを削除する
パスフレーズ付き秘密キーの残念な副作用の 1 つは、Web サーバーが起動するたびに Web サーバーがパスフレーズを要求することです。再起動やクラッシュの後など、誰かが常にパスフレーズを入力できるとは限らないため、これが必ずしも便利であるとは限りません。 mod_ssl には、組み込みのパスフレーズ ダイアログの代わりに外部プログラムを使用する機能が含まれていますが、これが必ずしも最も安全なオプションであるとは限りません。キーから Triple-DES 暗号化を削除することができるため、パスフレーズを入力する必要がなくなります。秘密キーが暗号化されなくなった場合は、このファイルを root ユーザーのみが読み取れるようにすることが重要です。システムが侵害され、暗号化されていない秘密キーが第三者に取得された場合は、対応する証明書を取り消す必要があります。そうは言っても、次のコマンドを使用してキーからパスフレーズを削除します。
cp サーバー.キー サーバー.キー.org
openssl rsa -inserver.key.org -outserver.key
新しく作成されたserver.keyファイルにはパスフレーズが含まれていません。
ステップ 4: 自己署名証明書の生成
この時点で、自己署名証明書を生成する必要があります。これは、CA によって証明書に署名される予定がないか、CA が証明書に署名している間に新しい SSL 実装をテストしたいためです。この一時証明書は、署名した認証局が不明で信頼されていないという旨のエラーをクライアント ブラウザに生成します。
365 日間有効な一時証明書を生成するには、次のコマンドを実行します。
openssl x509 -req -days 365 -in サーバー.csr -signkey サーバー.キー -out サーバー.crt
署名OK
subject=/C=CH/ST=ベルン/L=オーバーディースバッハ/O=アカディアAG/OU=情報
Technology/CN=public.akadia.com/Email=martin dot zahn at akadia dot ch
秘密鍵の取得
ステップ 5: 秘密キーと証明書のインストール
mod_ssl を備えた Apache がインストールされると、Apache config ディレクトリにいくつかのディレクトリが作成されます。このディレクトリの場所は、Apache がコンパイルされた方法によって異なります。
cp サーバー.crt /usr/local/apache/conf/ssl.crt
cp server.key /usr/local/apache/conf/ssl.key
ステップ 6: SSL が有効な仮想ホストの構成
SSエンジンがオン
SSL証明書ファイル /usr/local/apache/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key
SetEnvIf ユーザー エージェント ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
ここでApacheを再起動して確認してください。
ご連絡ください。