の通りです。Safari、Chromeでは確認済み。Firefoxは警告(警告: 潜在的なセキュリティリスクあり)がでますが、これは前から。まぁ自前でオレオレ証明書を作って、自分で承認する確信犯(テスト環境のため)ですから、それを検知してくれるのはいいんですけど、アクセスはできることと、SafariとChromeでは警告はでないので、Firefoxの警告を消す努力はもういいやって感じです。
さて、これまではうまくいっていたのにだめになった理由は次の通りでした。
にあるように、2019年1月1日以降の証明書については、2つのルールが追加されており、これに対応する必要があったのでした。
- ExtendedKeyUsage (EKU) extension にて serverAuth に対応すること
- サーバー証明書の有効期限は、825日以下にすること
です。これを探すまで超苦労したのでメモしておきます。なおそれ以外としては
- 証明書は、RSA 2048bit 以上、TLS であること
- SHA-2(SHA-256)を使うこと(SHA-1は駄目よ)
- Subject Alternative name extension を設定すること
は従来どおりになります。
mamp-enable-ssl.csh (GitHUB)
において、configファイルで
- ExtendedKeyUsage (EKU) extension にて serverAuth に対応すること
- サーバー証明書の有効期限は、825日以下にすること
- 証明書は、RSA 2048bit 以上、TLS であること
- SHA-2(SHA-256)を使うこと(SHA-1は駄目よ)
- Subject Alternative name extension を設定すること
に対応しています。
- [user_cert] と [v3_req]において、下記を追加
extendedKeyUsage = serverAuth - [CA_default]において、有効期限を 700日の設定を追加
default_days = 700 - [req] において、
default_bits = 2048 - [CA_default]において、SHA-2 (256)の設定を追加
default_md = 256 - [usr_cert] と [v3_req] において、subjectAltName = @alt_names を追加
[alt_names] において
DNS.1 = localhost
を追加。
DNS.1 = localhost というのは、実際にサイトでつかうDNS名
[alt_names]
DNS.1 = localhost
DNS.2 = *.test
など複数の指定が可能になる。
逆にここでちゃんといれておかないと駄目ってことになります。
上記対応を1つでもしていないと、もれなくChrome君が
といってきます。すべて対応すれば表示されなくなり
のように安全だといってくれますね!
macOS 10.15 になって一番苦労したのはこれかもしれない...
2020年1月27日 @kimipooh
[alt_names]
DNS.1 = localhost
DNS.2 = *.test
など複数の指定が可能になる。
逆にここでちゃんといれておかないと駄目ってことになります。
上記対応を1つでもしていないと、もれなくChrome君が
といってきます。すべて対応すれば表示されなくなり
のように安全だといってくれますね!
macOS 10.15 になって一番苦労したのはこれかもしれない...
参考
- Catalina Beta 4 Certificate Issues (Apple Developer Forum)
2020年1月27日 @kimipooh