Handcode створюємо сертифікати openssl
Створюємо сертифікати: OpenSSL
Практична користь даної статті, навчитися швидко почати роботу з SSL сертифікатами за допомогою програми OpenSSL. Зрозуміло, випуском сертифікатів займаються спеціальні центри сертифікації, і Вам не варто замислюватися про тонкощі створення сертифікатів, тим більше в production версії Ви все одно зробите запит на сертифікат в один з таких центрів, але в режимі debug / test, ви можете використовувати сертифікати зроблені власноруч (що мені одного разу і було потрібно). Я не буду розповідати що таке SSL сертифікат і для чого він потрібен, але для розуміння статті, це необхідно знати. Для кращого розуміння даної статті, виділимо кілька основних етапів:- Завантажити та встановити OpenSSL.
- Налаштуємо робоче місце.
- Випустимо CA сертифікат і для нього список відкликаних сертифікатів CRL.
- Зробимо запит на сертифікат нашому центру сертифікації.
- Випустимо сертифікат за запитом.
- Додамо наші сертифікати в сховища сертифікатів.
1. Беремо з сайту останню версію OpenSSL, і встановлюємо її на жорсткий диск.
2. Для зручності, додайте в змінну PATH повний шлях до bin директорії OpenSSL. Далі, для того щоб створені ключі, запити на сертифікат, сертифікати та інше не були перемішані в загальній купі, я рекомендую створити для себе робочий каталог mySSL, з наступними підкаталогами:

- key - каталог з private-ключами
- csr - каталог запитів на сертифікат (Certificate Signing Request)
- cer - каталог сертифікатів, для публічного користування (Certificate)
- crl - каталог списків відкликаних сертифікатів (Certificate Revocation List)
- p12 - каталог сертифікатів p12, з private-ключем (Personal Information Exchange File)
- database.txt - база даних випущених сертифікатів
- serial.txt - файл з поточним серійним номером сертифіката
3. Випустимо власний CA сертифікат, для цього, отримаємо private-ключ для нашого CA сертифікату. Це можна зробити за допомогою команди:
#openssl genrsa -des3 -out key / ca.key 1024
Після чого, створимо CA сертифікат, виконавши команду:
#openssl req -config openssl.conf -new -x509 -days 365 -key key / ca.key -out cer / ca.cer -subj "/ C = RU / ST = Russia / L = Moscow / O = MyCompany / OU = CA / CN = localhost "
Тут же створимо список відкликаних сертифікатів для CA сертифікату:
#openssl ca -config openssl.conf -gencrl -out crl / ca.crl
Зробимо експорт в PKCS12. упакувавши приватний ключ і сам CA сертифікат:
#openssl pkcs12 -export -in cer / ca.cer -inkey key / ca.key -out p12 / ca.p12
4. Наш CA сертифікат готовий, тепер ми можемо приступити до випуску дочірнього SSL сертифікату, для цього зробимо запит на SSL сертифікат:
# Openssl.exe req -config openssl.conf -new -newkey rsa 1024 -keyout key / test.key -nodes -out csr / test.csr -subj "/ C = RU / ST = Russia / L = Moscow / O = MyCompany / OU = IT Departament / CN = localhost "
5. Підтвердимо запит на сертифікат нашим CA сертифікатом (підпишемо серіфікат нашим CA сертифікатом):
#openssl ca -policy policy_any -config openssl.conf -in csr / test.csr -days 360 -out cer / test.cer
Зробимо експорт в PKCS12 отриманого SSL сертифікату:
#openssl pkcs12 -export -out p12 / test.p12 -in cer / test.cer -inkey key / test.key
6. Для того щоб додати наші сертифікати (PKCS12) в сховище сертифікатів треба в консолі управління оснащеннями (команда mmc) додати оснастку "Сертифікати" для локальної машини, після чого, імпортувати наші сертифікати та список відкликаних сертифікатів у відповідні папки (в папку "Особисті "і" Довірені кореневі центри сертифікації ").

Для швидкого розгортання можна скачати підсумковий bat-скрипт. Даний скрипт створює структуру каталогів, конфігураційний файл openssl.conf і запускає процес створення сертифікатів.
PS: Бережіть файли з приватними ключами (* .key) і файли PKCS12 (* .p12), по можливості зберігайте дані файли на спеціальних носіях. Доступ до даних файлів повинен бути сильно обмежений!
Файли сертифікатів (* .cer) і список відкликаних сертифікатів (* .crl) створені спеціально для публічного доступу, в тому числі і для розміщення в інтернеті.
Список відкликаних сертифікатів (* .crl) повинен оновлюватися якомога частіше.
UPD: Після того як необхідність в тестовому CA сертифікаті пройде, не забудьте видалити його зі списку довірених сертифікатів.
Привіт, Іьля. Як ваші справи?
У мене з'явилося проблема, і ось вже цілий день сиджу перед комп'ютером, шукаю відповіді:
Команда ось це:
openssl ca -passin pass: password -policy policy_anything -out "certificate.crt" -infiles "request.csr"
1 out of 1 certificate requests certified, commit? [Y / n] y
Write out database with 1 new entries
Data Base Updated
Чи є спосіб автоматично відповідати y на питання: Sign the certificate? [Y / n]: і 1 out of 1 certificate requests certified, commit?
Спасибі вам за відповідь.
У мене тут знову виникли ряд питань за вищевказаною створення сертифікатів :)
1. для чого прописаний в конфіги рандом файл хоч його і немає в директорії?
2. при створенні дочірнього сертифіката у мене в директорії cer додався файл 01.pem - для чого він і що з ним робити?
3. при створенні ключа для дочірнього сертифіката пас ні запитано, так і повинно бути?
4. виходить адже необов'язково створювати приват ключі і запит на самого клієнта, можна адже все виконати на сервері і передати клієнту файл pkcs12 і паролі)) або не так :)
1. Точно не пам'ятаю, але його можна знайти в корені або в папці з openssl. Це чисто службовий файл, зберігає seed для rand, і його іноді називають .rand, для того щоб він був прихованим в unix.
3. Можна зробити так, щоб запитував (як би додатковий захист ключа), а можна залишити як є. Просто зберігати ключ для CA у відкритому вигляді ризиковано.
4. Можна, якщо клієнт довіряє сервера і каналу передачі пароля з ключами.
@Nurlan
Це питання тут вже задавали вище, чесно кажучи я не маю на нього чіткої відповіді, ну крім тієї посилання.