LinuxにHTTPsサーバーを構築してみる

November 2, 2017

流れ

    1. CSRを作成する
    1. 証明書発行
    1. サーバー設定

1. CSRを作成する

CSR (Certificate Signing Request)は証明書発行依頼書と呼ばれ、CA(Certificate authority)へ提出するもの。 作成時に以下の情報が重要出そうだ。

  • Common Name (eg, your name or your server's hostname)
  • Domain name or server's public IP address

1.1. Private Key(機密鍵)発行

openssl genrsa -out /path/to/.key 2048

1.2. CSR発行 (Certificate Signing Request)

openssl req -new -key /path/to/.key -out /path/to/.csr

1.3. Private Keyからpassphraseを排除(無効)

Passphraseを有効にしていると、サーバー再起動した際、Private Keyを認証する為、Passphraseが求められるので、入力完了するまで、Website をアクセスできないことがある。

cp server.key server.key.org
openssl rsa -in server.key.org -out server.key

2. 証明書取得

実際はCAに発行してもらうが、テスト時は自己署名証明書を使用する。 このテストのようの証明書はself-signed certificateと呼ばれる。

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

👉self-signed certificateを使用する場合、以下のコマンドでCSR発行せずに、直接証明書を生成することができる

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
  • req: X509によりCSR作成
  • x509: self-signed認証発行する指示
  • nodes: passphraseを使用しない
  • days 365: 有効期限(1年)
  • newkey rsa:2048長ビットのkeyと証明書同時に発行。(rsa key with 2048 bits long)
  • keyout: private keyの作成場所
  • out: 証明書の置く場所

3. サーバー設定

3.1. 設定ファイル修正

/etc/httpd/conf.d/ssl.conf

# プロトコル
SSLProtocol -All +TLSv1 +TLSv1.1 +TLSv1.2

# 証明書指
SSLCertificateFile path/to/.crt

# 鍵ファイル指定
SSLCertificateKeyFile /path/to/.key

3.2. firewall 設定

httpsアクセスを許可する

firewall-cmd --add-service=https --permanent
firewall-cmd --reload

Initializing...