Волею судеб на новой работе приходится возиться с большим количеством криптографии, так что пришлось в ней разобраться. При этом я ни разу не претендую на титул эксперта, но некоторые вещи опишу здесь, чтобы было.
Опуская цели и принципы криптографии, остановлюсь на некоторых, полезных с точки зрения пользователя, деталях.
Доментация на команду openssl req
подробнее относительно опций:
Полученный запрос (request.csr) отравляется в центр сертификации (Certificate Authority, CA), который через некоторое время присылает сертификат. Обычно сертификат присылается на email, указанным при генерации запроса на сертификат. Ни в коем случае не нужно отправлять приватный ключ в центр сертификации, если вы это сделаете, ключ будет считаться скомпрометированным и придется повторять процесс заново.
Клиентский сертификат обычно имеет расширение pem, der или crt. Сертификат центра сертификации имеет расширение pem, der или crt и обычно содержит в имени файла слово CA.
Просмотреть содержимое сертификата можно командой
Доментация на команду openssl pkcs12
После конвертации можно поменять пользовательское имя (alias) у клиентского сертификата, по умолчанию он будет иметь имя "1".
Посмотреть, что же получилось, можно приведенной ниже командой.
Обычно требуется также добавить сертификат центра сертификации в cacerts, если сертификат сервера, на который производится соединение, выдан тем же CA (а обычно это так), сделать это можно командой
Полученное хранилище можно использовать для организации защищенного соединения с удаленным хостом.
Опуская цели и принципы криптографии, остановлюсь на некоторых, полезных с точки зрения пользователя, деталях.
Генерация запроса на сертификат
$openssl req -out request.csr -new -newkey rsa:2048 -utf8 -keyout private.key
Доментация на команду openssl req
подробнее относительно опций:
- -utf8 означает, что аттрибуты будут храниться как utf8 строки, что необходимо, если используются русские буквы, иначе в запросе получите кракозябры.
- -new генерирует новый запрос на сертификат, с запросом всех полей.
- -newkey rsa:2048 генерируется новый RSA ключ длиной 2048 бит.
- запрос записывается в файл request.csr, приватный ключ сохраняется в файл private.key
Полученный запрос (request.csr) отравляется в центр сертификации (Certificate Authority, CA), который через некоторое время присылает сертификат. Обычно сертификат присылается на email, указанным при генерации запроса на сертификат. Ни в коем случае не нужно отправлять приватный ключ в центр сертификации, если вы это сделаете, ключ будет считаться скомпрометированным и придется повторять процесс заново.
Импорт сертификата в JKS хранилище.
Клиентский сертификат обычно имеет расширение pem, der или crt. Сертификат центра сертификации имеет расширение pem, der или crt и обычно содержит в имени файла слово CA.
Просмотреть содержимое сертификата можно командой
$keytool -printcert -v -file cert.pemСуществуют определенные сложности с импортом только приватного ключа в jks хранилище хранилище посредством keytool, поэтому импорт производится в два этапа, на первом создается хранилище в формате PKCS#12, в которое помещаются приватный ключ и цепочка сертификатов, и потом это хранилище конвертируется в формат jks. При задании пароля на хранилище рекомендуется указать тот же пароль, что и и на приватный ключ.
$openssl pkcs12 -export -out store.pfx -inkey private.key -in clientcert.pem -certfile CAcert.pem $keytool -importkeystore -destkeystore store.jks -srckeystore store.pfx -srcstoretype PKCS12
Доментация на команду openssl pkcs12
После конвертации можно поменять пользовательское имя (alias) у клиентского сертификата, по умолчанию он будет иметь имя "1".
Посмотреть, что же получилось, можно приведенной ниже командой.
$keytool -v -list -keystore store.jksАльтернативным способом проверки будет загрузка полученного на предыдущем шаге файла store.pfx в IE и открытие в нем сайта, с которым необходимо осуществлять защищенное соединение.
Обычно требуется также добавить сертификат центра сертификации в cacerts, если сертификат сервера, на который производится соединение, выдан тем же CA (а обычно это так), сделать это можно командой
$keytool -import -trustcacerts -alias write_alias_here -file CAcert.pem -keystore cacerts
Полученное хранилище можно использовать для организации защищенного соединения с удаленным хостом.
Комментариев нет:
Отправить комментарий