Как мне создать самозаверяющий сертификат SSL?

64

Я установил SSL на своем веб-сервере, теперь мне нужно два файла:

  • сертификат
  • Ключ сертификата

Как мне создать самозаверяющий сертификат для тестирования?

Стефано Палаццо
источник

Ответы:

93

Ubuntu, даже «минимальный» вариант, поставляется с ssl-certпредустановленным пакетом, что означает, что вам не нужно ничего делать.

Файлы, которые вы ищете, уже находятся в вашей системе:

/etc/ssl/certs/ssl-cert-snakeoil.pem
/etc/ssl/private/ssl-cert-snakeoil.key


Дополнительно:

Если по какой-то причине вам нужно создать новый сертификат, вы можете запустить

sudo make-ssl-cert generate-default-snakeoil --force-overwrite 

Если вы хотите изменить дату истечения срока действия вашего сертификата, вы можете манипулировать скриптом make-ssl-cert по адресу /usr/sbin/make-ssl-cert. Примерно как 124 есть линия, похожая на эту:

openssl req -config $TMPFILE -new -x509 -nodes \ 

Где вы можете изменить срок годности, добавив -daysаргумент:

openssl req -config $TMPFILE -new -days 365 -x509 -nodes \ 

Дополнительные параметры можно найти на странице руководстваreq .

Стефано Палаццо
источник
10
Ubuntu-сервер 12.04 (образ облака AMI) не имеет установленного по умолчанию ssl-cert. Но после установки ssl-cert - /etc/ssl/certs/ssl-cert-snakeoil.pem становится доступным автоматически.
Станн
make-ssl-cert берет длину ключа (и другие настройки) для использования /usr/share/ssl-cert/ssleay.cnf.
Тим Смит
Пытаясь протестировать веб-сайт в локальном экземпляре виртуальной виртуальной машины, я хотел, чтобы Google Chrome действовал так, как если бы это был абсолютно нормальный сертификат. Я должен был сначала установить имя хоста виртуальной машины, чтобы соответствовать URL тестирования (например www.test.mydomain.com), используя hostnameкоманду в CLI VM. Затем создайте ключ заново, как вы предлагаете, с --force-overwriteпомощью общего имени ключа (CN), а затем сопоставьте его с URL-адресом тестирования. Наконец, на главном компьютере установка ключа в качестве доверенного корневого центра сертификации (в настройках Chrome / Advanced) дала мне желанную зеленую адресную строку.
Баттл Буткус
1
мой 9-летний сертификат перестал работать с моим обновлением до Debian 10, поэтому make-ssl-certкоманда спасла мне день!
Jayen
23

Как уже упоминалось, Ubuntu Server поставляется с необходимыми инструментами. В зависимости от версии вашего сервера вам придется искать конкретную документацию . Я попытаюсь обобщить процесс создания самозаверяющего сертификата текущей LTS (12.04) .

Сначала вы генерируете ключи для запроса подписи сертификата (CSR):

openssl genrsa -des3 -out server.key 2048

Вам решать вводить фразу-пароль или нет. Если вы это сделаете, то каждый раз, когда вы (повторно) запускаете службу, использующую этот сертификат, вам нужно будет предоставить пароль. Ото, вы можете создать «небезопасный» ключ без ключевой фразы из защищенного:

openssl rsa -in server.key -out server.key.insecure
# shuffle the key names to continue without passphrases
mv server.key server.key.secure
mv server.key.insecure server.key

И теперь вы создадите CSR из ключа. С помощью CSR и ключа можно создать самозаверяющий сертификат:

openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Последний шаг состоит в установке сертификата и ключа, обычно в Debian / Ubuntu /etc/ssl:

sudo cp server.crt /etc/ssl/certs
sudo cp server.key /etc/ssl/private

И, наконец, приложения, использующие сертификат / ключ, должны быть настроены соответствующим образом.

nietonfir
источник