2015-03-02

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 и удалить дополнитульную информацию.

Импортирование CA:

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:

1. KeyStore

Сначала сгенерите ваш 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

2. TrustStore

Для того, чтобы позволить вашему серверу аутентифицировать клиентов вам также необходимо доверительное хранилище (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".

ЗЫ вообще удалю эту страницу после того как разберу остальное

Комментариев нет:

Отправить комментарий