最初にApache関係をインストールしてWebサイトを構築します。

apacheをインストールします。
# yum install httpd httpd-devel mod_ssl

apacheを起動します。
# systemctl start httpd

apacheが自動起動するように設定します。
# systemctl enable httpd

必要ならapacheの設定を行います。
# cd /etc/httpd/conf
# vi httpd.conf

http,https,cstpなどがFirewallを通るように設定します。
# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --add-service=https --zone=public --permanent
# firewall-cmd --add-service=smtp --zone=public --permanent
# firewall-cmd --reload

--------------
ここからSSLの設定です。

・秘密鍵を置くディレクトリへ移動します。
# cd  /etc/pki/tls/certs

・最初にサーバー用の秘密鍵を生成します。2048bit RSA鍵とします。
# openssl  genrsa  -aes256  2048  >  server.key
この時にパスフレーズの入力が求められます。
Enter pass phrase: <適当なパスワード>
Verifying - Enter pass phrase:  <適当なパスワード>

先ほど設定したパスワードを削除します。
秘密鍵からパスワードを削除するのはapache起動時に毎回パスワードを要求されないようにするためです。
# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:<設定されているパスワード>

・サーバー用の公開鍵を作成します。いくつか質問されるので入力します。
# openssl  req  -new  -key  server.key  -days  3650  -out  server.csr
Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:Tokyo
Locality Name (eg, city) [Newbury]:Roppongi
Organization Name (eg, company) [My Company Ltd]:Totsusangyo
Organizational Unit Name (eg, section) []::(そのままENTER)
Common Name (eg, your name or your server s hostname) []:<サーバー名を入力>
Email Address []:(mailaddr):(そのままENTER)
A challenge password []:(そのままENTER)
An optional company name []:(そのままENTER)

・サーバー用証明書を作成します。 3650日の有効期限を設定しました。
# openssl  x509  -in  server.csr  -out  server.pem  -req  -signkey  server.key  -days  3650

・ちゃんとできたか確認します。
# openssl x509 -in /etc/ssl/certs/server.pem -text
Certificate:
  Data:
  Version: 1 (0x0)
  Serial Number:
  86:e1:49:52:99:2d:e6:8a
  Signature Algorithm: sha256WithRSAEncryption
以下省略しますが、こんな感じで表示されればOKです。

・セキュリティーを配慮して、各ファイルを所有者(root)のみ参照できるようにパーミッション変更しました。
# chmod 400 server.*


・httpdの設定を修正します。
# vi  /etc/httpd/conf.d/ssl.conf

コメント解除してドキュメントルートを指定します。
DocumentRoot "/data/html"

コメント解除しサーバー名を指定します。
ServerName (FQDN):443

変更します。
SSLProtocol all -SSLv2
 ↓
SSLProtocol  all +TLSv1 +TLSv1.1 +TLSv1.2

証明書を指定します。
SSLCertificateFile /etc/pki/tls/certs/server.pem

鍵ファイルを指定します。
SSLCertificateKeyFile /etc/pki/tls/certs/server.key

SSLのエンジンをオンします。
SSLEngine on

・Apacheをリスタートします
# systemctl  restart  httpd


SSLの自己証明書の期限が切れた場合には、SSH接続後、以下のようなコマンドで期限を延長することができます。
# openssl  x509  -days  $days  -signkey  $key_path  -in  $in_crt_path  -out  $out_crt_path

daysは日単位での証明書の有効期間、pathはそれぞれのファイルパスとなります。例えば、ssl.keyの 秘密鍵で作成されたssl.crtの期限を1年間延長してssl.crt.newとして保存したい場合には、
# openssl x509 -days 365 -signkey ssl.key -in ssl.crt -out ssl.crt.new
のように実行します。

また、証明書の中身をコマンドラインから閲覧したい場合は、
# openssl x509  -noout  -text  -in  $in_crt_path


最終更新日時: 2023年 10月 13日(金曜日) 10:50