Apache バーチャルホスト デフォルトサーバ

(図解+詳しく)複数VirtualHostの構成とマッチング動作 - 朝から昼寝 2022

Apache 自己署名証明書

server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)

www.example.com:443:0 server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)

暗号化されていない秘密キーをprikey.pemに書き込み、証明書をcert.pemに書き込んで、365日間有効な自己署名X.509証明書を作成します。

# openssl req -x509 -nodes -days 365 -subj '/C=US/ST=Ca/L=Sunnydale/CN=www.unserdom.com' \
  -newkey rsa:1024 -keyout prikey.pem -out cert.pem

https://docs.oracle.com/cd/E39368_01/security/ol_openssl_sec.html

上記のように1行コマンドで秘密キー、証明書を作成すると、証明書の X509v3 extensions: に
X509v3 Basic Constraints: critical
CA:TRUE
が含まれる。これが警告の原因

回避方法

https://stackoverflow.com/questions/36138517/apache-warns-that-my-self-signed-certificate-is-a-ca-certificate

openssl genrsa -out selfsigned.key 3072
openssl req -new -out selfsigned.csr -sha256 -key selfsigned.key -subj '/CN=www.example.com'
openssl x509 -req -in selfsigned.csr -days 365 -signkey selfsigned.key -out selfsigned.crt -outform PEM

vhost CNがIPの証明書

192.168.0.1:443:0 server certificate does NOT include an ID which matches the server name

回避方法
cat <<'EOS' > sans.txt
subjectAltName = IP:192.168.0.1
EOS
openssl genrsa -out selfsigned.key 3072
openssl req -new -out selfsigned.csr -sha256 -key selfsigned.key -subj '/CN=192.168.0.1'
openssl x509 -req -in selfsigned.csr -days 365 -signkey selfsigned.key -out selfsigned.crt -outform PEM -extfile  sans.txt

サーバ名がIPアドレスの場合の証明書作成 / サブジェクト代替名 (SAN) の設定方法 | 晴耕雨読 2022

IPアドレスでアクセスする場合やマルチドメイン用のSSL証明書の場合は、証明書検証時に Subject Alternative Name (SAN) もチェックされるのでこれを含む証明書を作成する必要がある。
サーバ名がIPアドレスの場合のSSL証明書作成 - 闘うITエンジニアの覚え書き