Денис Туляков - блог про те, що мені цікаво ssl сертифікати
Старе - треба поправити
Весь PKI починається з CA, отже, якщо у вас немає CA, то ви повинні його створити:
Як створити CA:
Для простих лабораторних випробувань я пропоную створити самоподпісанний CA, використовуючи openSSL.
openssl req -config openssl.cnf -x509 -new -days 365 -out cacert.pem -keyout private \ cakey.pem
Не намагайтеся встановлювати (копіювати) ваш ключ куди небудь крім private \ cakey.pem, інакше у вас потім можуть виникнути проблеми з безпекою. Дані, які ви вкажете як "Organization Name" і "Country Code" надалі будуть використані для всіх сертифікатів, які будуть створені з цим CA.
Як згенерувати сертифікат для веб-сервера (для Apache, Netscape або інших): Для початку згенерувати Certificate Signing Request (CSR).
Приклад використання Sun'овского keytool'а: Кращий інструмент для створення нового keystore (сховища ключів), наприклад, "ServerKeyStore".
keytool -genkey -keystore ServerKeyStore -alias WebServer
Це створює новий приватний ключ для веб-сервера. У процесі створення keytool запросить у вас деяку описову інформацію. Обов'язково надайте ті ж назву організації (Organization Name) і код країни (country code), як зазначено вище.
А тепер створіть CSR:
keytool -certReq -keystore ServerKeyStore -file webServerCSR.pem -alias WebServer
Ви отримаєте webServerCSR.pem, який є запитом на ваш сертифікат.
Створіть підписаний сертифікат для задоволення цього CSR використовуючи ваш CA:
openssl ca -config openssl.cnf -in webServerCSR.pem -out webServerCert.pem
Тепер у вас є підписаний сертифікат для сервера: webServerCert.pem. Поверніться до сервера і встановіть його. Веб-сервер повинен також знати CA, тому ви повинні встановити також і cacert.pem (сертифікат вашого CA) в keystore сервера.
Приклад використання Sun'овского keytool'а: keytool приймає тільки x.509 сертифікати, тому ви повинні відредагувати файл webServerCert.pem і видалити дополнітульную інформацію.
keytool -import -keystore ServerKeyStore -file cacert.pem -alias CA
Далі ви можете імпортувати сертифікат:
keytool -import -keystore ServerKeyStore -file webServerCert.pem -alias WebServer
Тепер ваш веб-сервер захищений і готовий для SSL.
Як згенерувати клієнтський сертифікат:
Почнемо з створення CSR та приватного ключа, використовуючи openssl (challenge password не вводити, інакше вилітає з помилкою):
openssl req -config openssl.cnf -new -days 365 -out myUser1CSR.pem -keyout myUser1Key.pem
Тепер ви повинні підписати CSR своїм CA і тоді ви отримаєте сертифікат: Пам'ятайте, що у вас вже є приватний ключ з попереднього кроку.
openssl ca -config openssl.cnf -in myUser1CSR.pem -out myUser1Cert.pem
Тепер у вас є все що необхідно. Однак, більшість інструментів, браузерів та інше воліють імпортувати pkcs12-файли на відміну від .pem і .der-файлів.
Як створити PKCS12:
Ваш перший крок полягає в зв'язуванні cacert, usercert і userkey разом.
cat cacert.pem myUser1Cert myUser1Key.pem> myUser1CertPKCS12.pem
(Cacert.pem додавати не обов'язково)
Тепер myUser1CertPKCS12.pem містить всі: CA, ключ і сертифікат. Ваш наступний і останній крок полягає в перетворенні myUser1CertPKCS12.pem в pkcs12-формат.
openssl pkcs12 -export -in myUser1CertPKCS12.pem -out myUser1Cert.p12 -name "User1 Client Certificate"
Браузер видасть вам це ім'я в списку вибору сертифікатів (у мене при використанні параметра name openssl взагалі вилітала).
Як використовувати Sun'овскій keytool:
Спочатку згенерувати ваш keystore, який буде використовуватися сервером для аутентифікації:
keytool -genkey -keystore C: \ mystores \ IonaStage \ iPAS -keyalg RSA
Це буде вашим серверним сертифікатом, який буде показаний браузеру при запиті до сервера. Сертифікат може бути встановлений, коли сервер запускається за допомогою такої команди:
java -Djavax.net.ssl.keyStore = C: \ mystores \ IonaStage \ iPAS -Djavax.net.ssl.keyStorePassword = keypassword
Наступні сертифікати можуть бути устновлено за допомогою команди:
keytool -genkey -keystore C: \ mystores \ IonaStage \ iPAS -keyalg RSA -alias Certificate2
Для того, щоб дозволити вашого сервера аутентифицировать клієнтів вам також необхідно довірче сховище (TrustStore), де будуть зберігатися всі довірені сертифікати або CA. Створити ваш TrustStore, шляхом імпортування сертифіката CA, можна наступним чином:
keytool -import -trustcacerts -file cacert.pem -keystore C: \ mystores \ IonaStage \ TrustStore
Додайте наступний рядок до рядка запуску вашого сервера:
-Djavax.net.ssl.keyStore = C: \ mystores \ IonaStage \ TrustStore -Djavax.net.ssl.keyStorePassword = trustpassword
Наступні сертифікати можуть бути створені або додані за допомогою такої команди:
keytool -import -trustedcacerts -file anotherca.pem -alias anotherca -keystore C: \ mystores \ IonaStage \ TrustStore
Генерація Certificate Signing Request (CSR) використовуючи Sun'овскій keytool
keytool -certreq -keystore C: \ mystores \ IonaStage \ iPAS -alias Server2 -file myServer2CertCSR.pem
Тепер у вас є ключ і непідписаний сертифікат в папці з keytool'ом (наприклад, C: \ jdk1.3 \ bin). Перенесіть CSR в папку з openSSL і підпишіть його CA:
openssl ca -config openssl.cnf -in myServer2CertCSR.pem -out myServer2Cert.pem
Ви отримаєте підписаний сертифікат (підписаний вашим CA) - myServer2Cert.pem
Імпорт підписаний сертифікат в keystore. Для повторного імпорту підписаного сертифіката, ви повинні змінити файл myServer2Cert.pem, інакше у вас виникнуть проблеми при імпорті. Скопіюйте тільки тіло сертифіката (включаючи рядки з тегами BEGIN і END) в файл myServer2CertModified.pem. Сертифікат повинен виглядати приблизно так:
-----BEGIN CERTIFICATE -----
MIIDyjCCAzOgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBpTELMAkGA1UEBhMCSUUx
FjAUBgNVBAgTDUNvdW50eSBEdWJsaW4xDzANBgNVBAcTBkR1YmxpbjEeMBwGA1UE
ChMVSU9OQSBUZWNobm9sb2dpZXMgcGxjMRIwEAYDVQQLEwlpUEFTIFRlYW0xFDAS
BgNVBAMTC0Jlbm5vIFZvZ2VsMSMwIQYJKoZIhvcNAQkBFhRiZW5uby52b2dlbEBp
b25hLmNvbTAeFw0wMTA3MjQxNjIyMzFaFw0wMjA3MjQxNjIyMzFaMIGlMQswCQYD
VQQGEwJJRTEWMBQGA1UECBMNQ291bnR5IER1YmxpbjEPMA0GA1UEBxMGRHVibGlu
MR4wHAYDVQQKExVJT05BIFRlY2hub2xvZ2llcyBwbGMxEjAQBgNVBAsTCWlQQVMg
VGVhbTEUMBIGA1UEAxMLQmVubm8gVm9nZWwxIzAhBgkqhkiG9w0BCQEWFGJlbm5v
LnZvZ2VsQGlvbmEuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCyxQrW
loVDzVpHolwJ41 / Nagqo + ePeyp30FvH9 / nUi + a / wLTTZN0JVHpoYKngp / hujCNQo
sG8mauq4z2mdGEO6HBL7JouSZ2Nb53Td8X / FIG8hOs15jKke21vrsbdhvRK / lKEv
YpE8NzIPenSTgpSr3Vu0MnUzOCgN + rMGV9LaKQIDAQABo4IBBjCCAQIwHQYDVR0O
BBYEFO9pXLUGAmj / 8PKoEb8utUEqkOY + MIHSBgNVHSMEgcowgceAFO9pXLUGAmj /
8PKoEb8utUEqkOY + oYGrpIGoMIGlMQswCQYDVQQGEwJJRTEWMBQGA1UECBMNQ291
bnR5IER1YmxpbjEPMA0GA1UEBxMGRHVibGluMR4wHAYDVQQKExVJT05BIFRlY2hu
b2xvZ2llcyBwbGMxEjAQBgNVBAsTCWlQQVMgVGVhbTEUMBIGA1UEAxMLQmVubm8g
Vm9nZWwxIzAhBgkqhkiG9w0BCQEWFGJlbm5vLnZvZ2VsQGlvbmEuY29tggEAMAwG
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAGFydQNe05Lo7OJciWrUzci4J
G2Nh3XrgGk1jWCjbNAyDiUUB6oYkXC7Oa + TVa2Nuq1L4fXli8Rn / FOPN2 / d6zBrq
grwxgxzE5q1IkI9uwjZbjKDOrpylJQXQ2L2a3TsOQ45o9YsMzFKiSAVlQ44uP8zU
okRKv5X340M5urRIXLs =
-----END CERTIFICATE -----
Імпорт файл за допомогою такої команди:
keytool -import -alias Server2 -file myServer2CertModified.pem -keystore C: \ mystores \ IonaStage \ iPAS
Ви отримаєте повідомлення на зразок цього "Certificate reply was installed in keystore".
ЗИ взагалі видалю цю сторінку після того як розберу інше