Генерация
Вы можете использовать небольшой файл с расширением (utf-8), чтобы задать нужные записи и упростить создание CSR. Записи DNS должны быть punycode, если не ASCII. (https://www.rfc-editor.org/rfc/rfc3492)
[требуется]
биты по умолчанию = 2048
подсказка = нет
default_md = sha256
отличительное_имя = отличительное имя
req_extensions = доб.
[ доб ]
subjectKeyIdentifier=хэш
keyUsage = цифровая подпись, ключевое шифрование
subjectAltName = @alt_names
[alt_names]
DNS.1 = mysite.local
DNS.2 = www.mysite.local
[ дн ]
О=АКМЕ
НУ=ТЕСТИРОВАНИЕ
адрес электронной почты[email protected]
CN = mysite.local
Вы можете сохранить это как sslcert.cnf
Например.
Замечания о подстановочных знаках
Вы можете использовать подстановочный знак, например *.example.com. Они работают только на одном уровне. foo.bar.example.com не будет покрываться *.example.com. Также *example.com не работает, звездочка должна быть в своем собственном компоненте домена.
Затем, если у вас еще нет закрытого ключа:
openssl req -nodes -newkey rsa:2048 -keyout sslcert.key -out sslcert.csr -config sslcert.cnf -utf8
Или если у вас уже есть закрытый ключ sslcert.key
openssl req -key sslcert.key -out sslcert.csr -config sslcert.cnf -utf8
sslcert.csr
будет выводом (а также sslcert.key
в первом примере)
Вы также можете добавить раздел subjectAltName с помощью -дополнение
openssl req -nodes -newkey rsa:2048 -keyout sslcert.key -out sslcert.csr -addext 'subjectAltName = DNS:example.com' -utf8
Проверка имени
Вы можете использовать команду openssl, чтобы проверить, потенциально ли сертификат соответствует домену, который вы используете при просмотре.
openssl x509 -in sslcert.crt -noout -checkhost example.com
Исторически запись CN в выдающемся имени предмет использовался при проверке имени хоста SSL. И он по-прежнему условно заполнен одним из доменов, но Chrome, например, не примет сертификат, который также не использует раздел Subject Alternative Names (SAN). И это также раздел, используемый для сертификатов с несколькими именами (даже если вы используете только домен с www и без него, это уже сертификат с несколькими именами). Согласно нормам CA/Browser, любое имя, которое вы устанавливаете в CN, также должно быть включено в раздел альтернативных имен.
Вы можете увидеть их в выводе
openssl x509 -text -noout -in cert.crt | grep -F 'Альтернативное имя субъекта:' -A 1
К сожалению, нет готового выходного коммутатора только для раздела SAN.
Это выглядит как:
X509v3 Альтернативное имя субъекта:
DNS: cert.local, DNS: cert.example.com
Проверка веб-сервера
Чтобы узнать, возвращает ли ваш веб-сервер сертификаты и цепочки (если у вас есть промежуточные звенья), которые вы установили, вы также можете использовать командную строку openssl (возможно, с самого веб-сервера).
openssl s_client -connect example.com:443 -servername example.com -showcerts
Если вы используете ЦС, не входящий в состав компьютера, на котором выполняется команда openssl, вы получите сообщение об ошибке проверки, но, по крайней мере, сможете увидеть возвращенные сертификаты.
В соединении вы также можете использовать IP-адрес, поэтому, если веб-сервер находится на той же машине и также прослушивает петлю, вы можете сказать
openssl s_client -connect localhost:443 -servername example.com -showcerts
-имя сервера
предназначен для выбора правильного виртуального хоста, если веб-сервер имеет несколько виртуальных хостов на порту 443.