Предупреждение. Перед тем как погрузиться в минное поле, на котором работает собственный центр сертификации, вам может потребоваться изучить последствия для безопасности!
Но если вам нужно, продолжайте читать для быстрого и грязного CA, который даст вам https://localhost/
без предупреждения ...
Создайте следующий текстовый файл:
# OpenSSL configuration for Root CA
[ req ]
prompt = no
string_mask = default
# The size of the keys in bits:
default_bits = 2048
distinguished_name = req_distinguished_name
x509_extensions = x509_ext
[ req_distinguished_name ]
# Note that the following are in 'reverse order' to what you'd expect to see.
countryName = gb
organizationName = Test
commonName = Test Root CA
[ x509_ext ]
basicConstraints=critical,CA:true,pathlen:0
keyUsage=critical,keyCertSign,cRLSign
Сохранить как и root.cnf
сгенерировать запрос с помощью:
$ openssl req -x509 -new -keyout root.key -out root.cer -config root.cnf
Это создаст ваш сертификат Root CA ( root.cer
) и ваш закрытый ключ Root CA ( root.key
), который вы должны сохранить в секрете. Он запросит пароль для закрытого ключа - убедитесь, что вы выбрали надежный.
Теперь создайте файл конфигурации для сертификата сервера:
# OpenSSL configuration for end-entity cert
[ req ]
prompt = no
string_mask = default
# The size of the keys in bits:
default_bits = 2048
distinguished_name = req_distinguished_name
x509_extensions = x509_ext
[ req_distinguished_name ]
# Note that the following are in 'reverse order' to what you'd expect to see.
countryName = gb
organizationName = Test
commonName = localhost
[ x509_ext ]
keyUsage=critical,digitalSignature,keyAgreement
subjectAltName = @alt_names
# Multiple Alternate Names are possible
[alt_names]
DNS.1 = localhost
# DNS.2 = altName.example.com
Сохраните его как server.cnf
и сгенерируйте запрос с помощью:
openssl req -nodes -new -keyout server.key -out server.csr -config server.cnf
Выше будет сгенерирован еще один закрытый ключ ( server.key
), который вы должны защитить. В этом случае ключ не защищен паролем, но вы можете добавить пароль, удалив этот -nodes
параметр.
Наконец, подпишите запрос с вашим новым корневым центром сертификации и расширениями из server.cnf
файла (для удобства):
$ openssl x509 -req -in server.csr -CA root.cer -CAkey root.key -set_serial 123 -out server.cer -extfile server.cnf -extensions x509_ext
Примечание: выберите любое случайное число для -set_serial
опции.
Он запросит пароль, который вы ввели при создании корневого центра сертификации.
Сертификат сервера ( server.cer
) будет создан.
Теперь добавьте сертификат Root CA ( root.cer
) в хранилище привязки доверия Firefox, чтобы браузер доверял вашему новому CA.
Запустите тест, используя OpenSSL в качестве временного веб-сервера с:
$ sudo openssl s_server -key server.key -cert server.cer -accept 443 -www
Примечание. Вы можете получить ошибки, если у вас уже есть сервер, работающий на порту 443. В этом случае либо остановите работающий сервер, либо измените указанный выше номер порта на другой неиспользуемый порт, изменив окончание на (например) -accept 8443 -www
Когда вы перейдете к https://localhost
(или https://localhost:8443
если вы изменили номер порта выше) с Firefox, вы теперь не должны видеть предупреждений и получать список шифров, которые может предложить ваша установка OpenSSL.
Когда вы будете довольны результатами, добавьте server.key
и server.cer
к своему исходному веб-серверу и настройте его соответствующим образом.