Предположим, мы хотим установить самозаверяющий сертификат для нашего нового сервера / хоста в нашей локальной сети, где Let's Encrypt не подходит для нас, например FRITZ! Box, домен: fritz.box, https://fritz.box, IPv4: 192.168.1.1
1.1 сгенерируйте закрытый ключ для вашего CA
openssl genrsa -aes256 -out patrickca.key 4096
о -aes128 или -aes256: https://security.stackexchange.com/q/14068
1.2 генерирует сертификат CA (root сертификат)
openssl req -new -key patrickca.key -x509 -out patrickca.crt -days 3650
2. создайте запрос сертификата вашего домена / сервера
openssl req -new -nodes -newkey rsa:4096 -keyout fritzbox.key -out fritzbox.req -batch -subj "/C=DE/ST=Hamburg/L=Hamburg/O=Patrick CA/OU=router/CN=fritz.box" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:fritz.box,IP:192.168.1.1"))
3. подписать запрос сертификата
openssl x509 -req -in fritzbox.req -CA patrickca.crt -CAkey patrickca.key -CAcreateserial -out fritzbox.crt -days 3650 -sha256 -extfile <(printf "subjectAltName=DNS:fritz.box,IP:192.168.1.1")
4. создать файл цепочки (вам может понадобиться дополнительный промежуточный сертификат в процессе вашей организации)
cat fritzbox.key > fritzboxchain.pem
cat fritzbox.crt >> fritzboxchain.pem
cat patrickca.crt >> fritzboxchain.pem
Вы импортировали бы этот файл в свою коробку FRITZ!, если бы это был не просто пример.
5. Дополнительные шаги в Firefox и Chrome (в настоящее время я не использую другие браузеры, и никто в моих организациях этого не делает)
Конечно, вы хотите подтвердить, что знаете, что делаете, если ваш браузер отображает предупреждающее сообщение о вашем сертификате https.
И вы, возможно, захотите установить это как постоянное исключение.
Но: импортируйте сертификат CA шага 1.2 как доверенный CA , (в 05/2020 должно быть достаточно для Firefox установки CN =, для Chrome может возникнуть проблема с SAN, если она все еще не возникает, кроме вашего самоподписанного сертификата)