OpenSSLとHTTPSの設定

〜 Apacheで安全な通信を実現する方法 〜


目次

📌 概要

Apache HTTPサーバーにHTTPS機能を追加することで、通信内容を暗号化し、安全なWebサービスを提供できます。この記事では以下を解説します:

  • OpenSSLによる鍵・証明書の作成
  • ApacheへのSSL設定の反映方法
  • 商用証明書の申請や自己署名証明書の設定方法
  • セキュアなSSL/TLS構成のポイント

🛠 1. OpenSSLの基本操作

🔑 鍵(private key)とCSR(証明書署名要求)の作成

# サーバー秘密鍵(2048ビット)作成
openssl genpkey -algorithm RSA -out server.key -aes256

# CSRの作成(公開情報を入力)
openssl req -new -key server.key -out server.csr
  • server.key: サーバー秘密鍵
  • server.csr: 商用CAに提出する証明書署名要求(CSR)

🧾 自己署名証明書の作成(テスト用途)

openssl req -x509 -days 365 -key server.key -in server.csr -out server.crt

📁 2. ファイルの配置場所(ディストリビューション別)

ディレクトリ説明
/etc/ssl/証明書や鍵の一般的な配置先(Debian系)
/etc/pki/tls/Red Hat系の標準パス
/etc/httpd/conf.d/ssl.confSSL設定ファイル(CentOS/RHEL)
/etc/apache2/sites-available/default-ssl.confSSLサイト設定(Debian/Ubuntu)

⚙️ 3. ApacheにSSLを設定する

主要ディレクティブ

<VirtualHost *:443>
ServerName www.example.com
DocumentRoot /var/www/html

SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key

SSLCACertificateFile /etc/ssl/certs/ca_bundle.crt
SSLCertificateChainFile /etc/ssl/certs/intermediate.crt

SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!aNULL:!MD5
</VirtualHost>
ディレクティブ説明
SSLEngine onHTTPS通信を有効にする
SSLCertificateFile公開証明書
SSLCertificateKeyFile秘密鍵
SSLCACertificateFile中間CA証明書(必要な場合)
SSLProtocol使用するTLS/SSLバージョンの制御
SSLCipherSuite使用する暗号スイートの制限

🧰 4. 必要モジュールの有効化(Debian系)

sudo a2enmod ssl
sudo a2ensite default-ssl
sudo systemctl reload apache2

🚨 5. SSLのセキュリティ強化ポイント

対策内容
古いプロトコルの無効化-SSLv2 -SSLv3 を明示的に除外
弱い暗号スイート除外!aNULL:!eNULL:!EXPORT:!DES:!RC4 など
HSTSヘッダ追加HTTPヘッダに Strict-Transport-Security を設定する
OCSP Staplingの有効化SSL証明書の失効確認を高速・安全に行う
設定テストSSL Labs で評価可能

🧪 6. 設定後の確認

✅ Apache設定の構文チェック

apachectl configtest

🔍 ポート443でのリッスン確認

sudo ss -tlnp | grep 443

🔐 ブラウザ確認(https://localhostなど)

  • 証明書エラーが出る場合は自己署名証明書である可能性あり
  • 商用CAの証明書ならエラーなし

📦 7. 商用SSL証明書の流れまとめ

  1. OpenSSLでCSRと鍵を生成
  2. CSRを証明機関(CA)へ送信
  3. CAから .crt や中間証明書が届く
  4. ApacheのSSL設定に反映
  5. 設定反映後、HTTPSで公開!

🧾 まとめ表

項目設定/ファイル備考
鍵と証明書openssl, server.key, server.crt, server.csr自己署名 or 商用
Apache設定SSLEngine, SSLCertificateFileなど/etc/httpd/conf.d/ssl.confなど
セキュリティ強化SSLProtocol, SSLCipherSuite弱いプロトコルは無効化
配置場所/etc/ssl/, /etc/pki/ディストリビューションで異なる
モジュール有効化a2enmod sslDebian系向け操作

📘 補足:Let’s Encryptの自動証明書管理

無料のSSL証明書を自動で発行・更新する「Let’s Encrypt」もおすすめです。

sudo apt install certbot python3-certbot-apache
sudo certbot --apache

ApacheでHTTPSを有効にすることで、安全性と信頼性の高いWebサービスを提供できます。OpenSSLを使った証明書生成と設定をしっかり理解し、セキュアな構築ができるようになりましょう!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次