!!!OpenBSD Webサーバ の SSL(TSL) 接続 (httpd on OpenBSD ==6.8== 7.0) {{category OpenBSD,nolink}}OpenBSD の Webサーバ httpd(relayd) で、SSL(TSL) 接続する。 自己証明書(オレオレ証明書) と ACME client を用いての Let's Encrypt の証明書の取得と更新をする。 httpd 自体を動かす設定は、[[OpenBSD/httpd/68(relayd)]] を参照。 * 関連 man → [httpd(8)|https://man.openbsd.org/httpd.8], [httpd.conf(5)|https://man.openbsd.org/httpd.conf.5], [openssl(1)|https://man.openbsd.org/openssl.1], [acme-client(1)|https://man.openbsd.org/acme-client.1] !!!自己証明書で SSL(TSL) 接続 !!秘密鍵と証明書の作成 LibreSSL の openssl コマンドを使って、サーバの秘密鍵と証明書(自己署名証明書)を作成する。 !秘密鍵の作成 bbb# openssl genrsa -out /etc/ssl/private/server.key 2048 Generating RSA private key, 2048 bit long modulus ..........................+++++ ..............+++++ e is 65537 (0x10001) !証明書署名要求(CSR)の作成 -subj オプションの内容は、対象のサーバに合わせて変える。指定しなければ、対話形式で入力となる。 特に CN については、実際のホスト名(URL の FDQN)に合わせる。 bbb# openssl req -new -key /etc/ssl/private/server.key -out /etc/ssl/private/server.csr -subj "/C=JP/ST=Tokyo/L=Chuo-Ku/CN=example.com" !証明書(CRT)の作成 bbb# openssl x509 -days 3650 -req -signkey /etc/ssl/private/server.key -in /etc/ssl/private/server.csr -out /etc/ssl/server.crt Signature ok subject=/C=JP/ST=Tokyo/L=Chuo-Ku/CN=example.com Getting Private key !秘密鍵ファイルの内容を確認 bbb# openssl rsa -text -noout -in /etc/ssl/private/server.key RSA Private-Key: (2048 bit) modulus:   :以下略 !証明書署名要求の内容を確認 bbb# openssl req -text -noout -in /etc/ssl/private/server.csr Certificate Request: Data: Version: 0 (0x0) Subject: C=JP, ST=Tokyo, L=Chuo-Ku, CN=example.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (2048 bit) Modulus:   :以下略 !証明書ファイルの内容を確認 bbb# openssl x509 -text -noout -in /etc/ssl/server.crt Certificate: Data: Version: 1 (0x0) Serial Number: ac:fd:4f:7d:d5:52:9b:a0 Signature Algorithm: sha256WithRSAEncryption Issuer: C=JP, ST=Tokyo, L=Chuo-Ku, CN=example.com Validity Not Before: Dec 5 11:02:41 2021 GMT Not After : Dec 3 11:02:41 2031 GMT Subject: C=JP, ST=Tokyo, L=Chuo-Ku, CN=example.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (2048 bit) Modulus:   :以下略 !! Webサーバ(httpd) の設定 '''/etc/httpd.conf''' に設定する。 TSL(HTTP over SSL/TLS)接続で待つポート番号と、作成したキーファイル /etc/ssl/private/server.key 、証明書 /etc/ssl/server.crt を指定する。 server "default" { listen on * port 80 listen on * tls port 443 tls { certificate "/etc/ssl/server.crt" key "/etc/ssl/private/server.key" } # :中略 }