Як створити самопідписаний сертифікат 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.
Тім Сміт

Намагаючись протестувати веб-сайт у локальному екземплярі VM, я хотів, щоб Google Chrome діяв так, ніби це був абсолютно нормальний сертифікат. Спершу мені довелося встановити ім'я хоста VM, щоб воно відповідало тестовому URL-адресу (наприклад www.test.mydomain.com) за допомогою hostnameкоманди в VM CLI. Потім регенеруйте ключ, як ви пропонуєте, за --force-overwriteдопомогою загального імені ключа (CN), а потім співпадає з тестовою URL-адресою. Нарешті, на хост-машині встановлення ключа як довіреного кореневого сертифікаційного органу (у налаштуваннях Chrome / Advanced) дало мені бажаний зелений адресний рядок.
Buttle Butkus

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

А тепер ви створите КСВ з ключа. За допомогою КСВ та ключа можна створити самопідписаний сертифікат:

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

І нарешті, програми, що використовують сертифікат / ключ, повинні бути налаштовані відповідно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.