The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"tomcat и ssl"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Др. сетевые сервисы / Linux)
Изначальное сообщение [ Отслеживать ]

"tomcat и ssl"  +/
Сообщение от ALex_hha (ok) on 24-Июн-15, 11:15 
Собственно столкнулся с сабжем и что не получилось нормально настроить. Прочитал 100500 статей, но нигде толком не объясняется, как же таки нормально настроить tomcat и ssl.

У меня есть

rootca.crt, intermediate.crt, server.crt, private.key

Везде, где видел в keystore добавляли только сертификаты, но не сам private key. Пока что частично получилось настроить так


$ openssl pkcs12 -export -in jira.example.net.crt -inkey jira.example.net.key > jira.example.net.p12

$ keytool -importkeystore -srckeystore /opt/jira/jira.example.net.p12 -destkeystore /opt/jira/jira.jks -srcstoretype pkcs12

$ keytool -importcert -alias intermediateca -keystore /opt/jira/jira.jks -trustcacerts -file /opt/jira/sub.class1.server.ca.crt

$ keytool -importcert -alias rootca -keystore /opt/jira/jira.jks -trustcacerts -file /opt/jira/rootca.crt

В итоге получаю


$ keytool -list -keystore /opt/jira/jira.jks
Enter keystore password:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 3 entries

rootca, Jun 23, 2015, trustedCertEntry,
Certificate fingerprint (SHA1): 3E:2B:F7:F2:03:1B:96:F3:8C:E6:C4:D8:A8:5D:3E:2D:58:47:6A:0F

intermediateca, Jun 23, 2015, trustedCertEntry,
Certificate fingerprint (SHA1): F6:91:FC:87:EF:B3:13:53:54:22:5A:10:E1:27:E9:11:D1:C7:F8:CF

1, Jun 23, 2015, PrivateKeyEntry,
Certificate fingerprint (SHA1): F2:CE:0D:6F:D7:71:DF:57:41:96:A9:48:EB:CA:6C:94:C9:C5:4E:F0


Затем в контейнере указываю jira.jks


<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
   maxHttpHeaderSize="8192" SSLEnabled="true"
   maxThreads="150" minSpareThreads="25"
   keystoreFile="/opt/jira/jira.jks" keystorePass="7654321" keystoreType="JKS"
   enableLookups="false" disableUploadTimeout="true"
   acceptCount="100" scheme="https" secure="true"
   clientAuth="false" sslProtocol="TLS" useBodyEncodingForURI="true"
/>

И вроде как работает, по крайней мере в проводнике, но если проверять из командной строки, то получаю


# openssl s_client -connect jira.example.net:8443
CONNECTED(00000003)
depth=0 C = UA, CN = jira.example.net, emailAddress = webmaster@example.net
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = UA, CN = jira.example.net, emailAddress = webmaster@example.net
verify error:num=27:certificate not trusted
verify return:1
depth=0 C = UA, CN = jira.example.net, emailAddress = webmaster@example.net
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/C=UA/CN=jira.example.net/emailAddress=webmaster@example.net
   i:/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Class 1 Primary Intermediate Server CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIHKDCCBhCgAwIBAgIHBQAf14IL/TANBgkqhkiG9w0BAQsFADCBjDELMAkGA1UE

Я так понимаю, что я что то упускаю, но не могу понять что. По техническим причинам терминирование ssl нельзя вынести на apache/nginx/etc.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "tomcat и ssl"  +/
Сообщение от PavelR (??) on 24-Июн-15, 11:55 
> #openssl s_client -connect jira.example.net:8443

openssl s_client -connect jira.example.net:8443  -CApath /etc/ssl/certs/

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "tomcat и ssl"  +/
Сообщение от ALex_hha (ok) on 24-Июн-15, 12:43 
> openssl s_client -connect jira.example.net:8443  -CApath /etc/ssl/certs/

Та же ошибка


$ openssl s_client -connect jira.example.net:8443 -CApath /etc/ssl/certs/
CONNECTED(00000003)
depth=0 C = UA, CN = jira.example.net, emailAddress = webmaster@example.net
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = UA, CN = jira.example.net, emailAddress = webmaster@example.net
verify error:num=27:certificate not trusted
verify return:1
depth=0 C = UA, CN = jira.example.net, emailAddress = webmaster@example.net
verify error:num=21:unable to verify the first certificate
verify return:1
---
...
...
...
subject=/C=UA/CN=jira.example.net/emailAddress=webmaster@example.net
issuer=/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Class 1 Primary Intermediate Server CA
---
No client certificate CA names sent
Server Temp Key: ECDH, secp521r1, 521 bits
---
SSL handshake has read 2644 bytes and written 443 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 4096 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES128-GCM-SHA256
    Session-ID: 558A79F79BD40FD46CC269070BDCD945723DD3ADBD95F3CD630CB907736F5BCF
    Session-ID-ctx:
    Master-Key: 098376A226B8CFDEE25E006435C7939754E4CD9C9FAA453228D4B8C3764C179983843DBD257144069E1C7B03969F132B
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time: 1435138551
    Timeout   : 300 (sec)
    Verify return code: 21 (unable to verify the first certificate)
---

Если пускать через апач, то таких проблем нет, даже без указания -CApath


$ openssl s_client -connect jira.example.net:443
CONNECTED(00000003)
depth=2 C = IL, O = StartCom Ltd., OU = Secure Digital Certificate Signing, CN = StartCom Certification Authority
verify return:1
depth=1 C = IL, O = StartCom Ltd., OU = Secure Digital Certificate Signing, CN = StartCom Class 1 Primary Intermediate Server CA
verify return:1
depth=0 C = UA, CN = jira.example.net, emailAddress = webmaster@example.net
verify return:1
---

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "tomcat и ssl"  +1 +/
Сообщение от eRIC (ok) on 24-Июн-15, 13:16 
>[оверквотинг удален]
>CONNECTED(00000003)
>depth=0 C = UA, CN = jira.example.net, emailAddress = webmaster@example.net
>verify error:num=20:unable to get local issuer certificate
>verify return:1
>depth=0 C = UA, CN = jira.example.net, emailAddress = webmaster@example.net
>verify error:num=27:certificate not trusted
>verify return:1
>depth=0 C = UA, CN = jira.example.net, emailAddress = webmaster@example.net
>verify error:num=21:unable to verify the first certificate
>verify return:1

если не ошибаюсь, не может найти всю цепочку(chain) сертификатов, т.е где участвует промежуточный сертификат.

решалось объединением в цепочку СА и промежуточного сертификата и его импортом в keystore

гляньте:
https://stackoverflow.com/questions/8120690/tomcat-doesnt-de...
http://www.fourproc.com/2010/06/23/create-a-ssl-keystore-for...


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "tomcat и ssl"  +/
Сообщение от ALex_hha (ok) on 24-Июн-15, 14:22 
> если не ошибаюсь, не может найти всю цепочку(chain) сертификатов, т.е где участвует
> промежуточный сертификат.

похоже на то

> решалось объединением в цепочку СА и промежуточного сертификата и его импортом в
> keystore

но я импортировал и корневой и промежуточный сертификаты.

> гляньте:
> https://stackoverflow.com/questions/8120690/tomcat-doesnt-de...
> http://www.fourproc.com/2010/06/23/create-a-ssl-keystore-for...

ok, посмотрю

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "tomcat и ssl"  +/
Сообщение от eRIC (ok) on 24-Июн-15, 19:52 
> но я импортировал и корневой и промежуточный сертификаты.

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

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

5. "tomcat и ssl"  +1 +/
Сообщение от ALex_hha (ok) on 24-Июн-15, 18:52 
В общем удалось победить

Создаем цепочку. Порядок имеет значение! root -> intermediate -> server


$ cat rootca.crt > chain.pem
$ cat sub.class1.server.ca.crt >> chain.pem
$ cat jira.example.net.crt >> chain.pem

https://answers.atlassian.com/questions/146659/unable-to-con...

Note: If root or intermediate certificates are necessary, they MUST be inserted into the keychain in the order root -> intermediate(s) -> domain

Проверяем


$ openssl verify chain.pem
chain.pem: OK

Экспортируем в pkcs12


$ openssl pkcs12 -export -in chain.pem -inkey jira.example.net.key > chain.p12
Enter Export Password:
Verifying - Enter Export Password:


Импортируем нашу цепочку и закрытый ключ и на их основе создаем свой keystore


$ keytool -importkeystore -srckeystore chain.p12 -destkeystore jira.jks -srcstoretype pkcs12            
Enter destination keystore password:
Re-enter new password:
Enter source keystore password:
Entry for alias 1 successfully imported.
Import command completed:  1 entries successfully imported, 0 entries failed or cancelled

Проверяем


$ keytool -list -keystore jira.jks
Enter keystore password:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

1, Jun 24, 2015, PrivateKeyEntry,
Certificate fingerprint (SHA1): F2:CE:0D:6F:D7:71:DF:57:41:96:A9:48:EB:CA:6C:94:C9:C5:4E:F0

После этого указываем файл jira.jks в описании контейнера

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "tomcat и ssl"  +/
Сообщение от anonymous (??) on 25-Июн-15, 11:37 
можно было сделать проще, отказаться от хранилища jks и прописать сертификаты в ручную, это описано здесь же на ресурсе через поиск найдете tomcat+ssl:

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
        maxThreads="150" scheme="https" secure="true"
        SSLCACertificateFile="${catalina.home}/cert/root.crt"
        SSLCertificateFile="${catalina.home}/cert/client.crt"
        SSLCertificateKeyFile="${catalina.home}/cert/client.key"
        sslProtocol="TLS" />

в root.crt все зависимые сертификаты.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

9. "tomcat и ssl"  +/
Сообщение от and (??) on 25-Июн-15, 11:38 
можно было сделать проще, отказаться от хранилища jks и прописать сертификаты в ручную, это описано здесь же на ресурсе через поиск найдете tomcat+ssl:

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
        maxThreads="150" scheme="https" secure="true"
        SSLCACertificateFile="${catalina.home}/cert/root.crt"
        SSLCertificateFile="${catalina.home}/cert/client.crt"
        SSLCertificateKeyFile="${catalina.home}/cert/client.key"
        sslProtocol="TLS" />

в root.crt все зависимые сертификаты.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

10. "tomcat и ssl"  +1 +/
Сообщение от ALex_hha (ok) on 30-Июн-15, 14:58 
> можно было сделать проще, отказаться от хранилища jks и прописать сертификаты в
> ручную, это описано здесь же на ресурсе через поиск найдете tomcat+ssl:
>     <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
>         maxThreads="150" scheme="https" secure="true"
>         SSLCACertificateFile="${catalina.home}/cert/root.crt"
>         SSLCertificateFile="${catalina.home}/cert/client.crt"
>         SSLCertificateKeyFile="${catalina.home}/cert/client.key"
>         sslProtocol="TLS" />
> в root.crt все зависимые сертификаты.

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


<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
   scheme="https"
   secure="true"
   clientAuth="false"
   useBodyEncodingForURI="true"

   SSLEnabled="true"
   SSLHonorCipherOrder="true"
   SSLDisableCompression="true"
   SSLCertificateFile="/etc/pki/jira/jira.example.net.crt"
   SSLCertificateKeyFile="/etc/pki/jira/jira.example.net.key"
   SSLCertificateChainFile="/etc/pki/jira/chain.crt"
   SSLCipherSuite="ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK"
   SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"/>

C tomcat-7.0.57+ и tcnative-1.1.34 (пока что доступна только в транке) на ssllabs получается A

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "tomcat и ssl"  +/
Сообщение от ALex_hha (ok) on 03-Июл-15, 16:01 
http://sys-adm.org.ua/www/jira-tomcat-ssl

сделал заметку, может кому пригодится

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру