2012-02-15 6 views
0

Я создал свой сертификат следующим образом:Как добавить самоподписанный сертификат openssl x509 в Tomcat

openssl req -nodes -new -text -out ~/server.req -keyout ~/server.key

openssl req -x509 -in ~/server.req -text -key ~/server.key -out ~/server.crt

мне теперь нужно добавить его в Tomcat, очевидно, я не могу использовать пример Tomcat Документов

openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -name tomcat -CAfile serverCA.crt -caname root -chain

, потому что она самозаверенный. Итак, как добавить его в Tomcat?

+0

Криптография Java разработана таким образом, что она запрашивает действительную цепочку обратно в доверенный ЦС. Единственный способ заставить Java принять самозаверяющий сертификат - добавить корневой сертификат ЦС, с которым вы подписали сертификат, в список доверенных сертификатов в хранилище ключей по умолчанию Java. Я сделал это несколько лет назад, и это было непросто. К сожалению, сейчас у меня нет времени, чтобы найти мои старые заметки. Я надеюсь, что кто-то еще сможет предоставить подробную информацию. –

+0

Хорошо, привет, я посмотрю, что я могу найти, связанный с добавлением корневого сертификата CA – tojofo

+0

@tojofo: Что это за сертификаты? Вы создали их с помощью CN и самозаверялись? – Cratylus

ответ

0

Пример, представленный в документации Tomcat, будет работать, вам просто нужно создать свой собственный локальный центр сертификации для создания своего сертификата.

Я нашел этот учебник полезным в прошлом: http://gagravarr.org/writing/openssl-certs/ca.shtml

следующие команды из этой страницы:

openssl genrsa -des3 -out CA.key <key_size> 
openssl req -new -key CA.key -x509 -days 1095 -out ../certs/CA.crt 

Где CA.crt будет то, что используется при создании вашего сертификата с -CAfile флагом

Надеюсь, что это поможет.

+0

Я создал CA.crt, но при попытке добавить, используя команду формы в документах Tomcat и перечисленных выше, я все еще получаю; 'Ошибка самоподписанного сертификата get chain.' – tojofo

0

Я нашел свои старые заметки.

Вы не можете использовать самоподписанный сертификат. То, что вы должны сделать, это пойти длинный путь и создать «реальный» локальный центр, следующий образом:

Генерации закрытого ключа для CA

openssl genrsa -out CA/cakey.pem -des3 2048 

Сформировать запрос сертификата подписи для сертификата корневого ЦСА

openssl req -new -config openssl.cnf -key CA/cakey.pem -out CA/cacert.req 

Self-Подпишите CA Certificate

openssl x509 -req -in CA/cacert.req -extfile openssl.cnf \ 
    -extensions v3_ca -signkey CA/cakey.pem -out CA/cacert.pem -days 3650 

Генерирование Java KE ystore, содержащий сертификат CA для вашего клиента:

keytool -importcert -file CA/cacert.pem -keystore client.jks -storepass [password] 
+1

Ну, теперь мне удалось получить ключ, но при запуске я получаю следующую ошибку:' java.io.IOException: jsse.invalid_ssl_conf' Вызывается 'Отсутствие доступного сертификата или ключа соответствует разрешенные SSL-шифры' Документы предлагают неправильный псевдоним, указав, что 'keyAlias' не разрешает его, также есть только один ключ, и по умолчанию он должен его прочитать. Нужно ли использовать коннектор AJP? – tojofo

Смежные вопросы