Коннектор Tomcat8.5 SSL с сертификатом goDaddy

Я выполнил инструкцию по созданию ключа и сертификата. Мне удалось успешно импортировать сертификат. Не могу правильно достать разъем.

Вот шаги и сообщения.

  1. Генерация ключа

    keytool -genkey -alias server -keyalg RSA -keysize 2048 -keystore myKey.jks -dname "CN=dnsName.com
    
  2. Сгенерируйте запрос на подпись сертификата.

    keytool -certreq -alias server -file myCSR.csr -keystore myKey.jks 
    
  3. Загрузите сертификат из CA: скопируйте содержимое myCSR в goDaddy и загрузите 3 файла: serialNumber-root.crt, bundle-intermediate.crt, *.pem

  4. Установка SSL-сертификата веб-сервера Tomcat:

    keytool -import -alias root -keystore myKey.jks -trustcacerts -file serialNumber-root.crt
    keytool -import -alias intermed -keystore myKey.jks -trustcacerts -file bundle-intermediate.crt
    keytool -import -alias tomcat -keystore myKey.jks -trustcacerts -file serialNumber-root.crt
    

На данный момент все успешно.

  1. Изменить tomcat/conf/server.xml

а. дает мне java.lang.Exception: Unable to load certificate key E:\tomcat\certificate\myKey.jks (error:0906D06C:PEM routines:PEM_read_bio:no start line)

<Connector port = "8443" protocol = "org.apache.coyote.http11.Http11AprProtocol"
           maxThreads = "150" SSLEnabled = "true" >
    <UpgradeProtocol className = "org.apache.coyote.http2.Http2Protocol" />
    <SSLHostConfig>
        <Certificate certificateKeyFile = "E:\tomcat\certificate\myKey.jks"
                     certificateFile = "E:\tomcat\certificate\serialNumber-root.crt"
                     certificateChainFile = "E:\tomcat\certificate\serialNumber-root.crt"
                     type = "RSA" />
    </SSLHostConfig>
</Connector>

ИЛИ ЖЕ

<Connector port = "8443" scheme = "https" secure = "true" SSLEnabled = "true" 
    SSLCertificateFile = "E:\tomcat\certificate\serialNumber-root.crt" 
    SSLCertificateKeyFile = "myKey.jks" 
    SSLPassword = "password" 
    SSLCertificateChainFile = "E:\tomcat\certificate\serialNumber-root.crt" 
    keyAlias = "server" SSLProtocol = "TLSv1"/>

б. дает мне java.lang.IllegalArgumentException: java.io.IOException: Alias name [server] does not identify a key entry

<Connector 
       port = "8443" maxThreads = "200"
       scheme = "https" secure = "true" SSLEnabled = "true"
       keystoreFile = "E:\tomcat\certificate\myKey.jks" 
       keystorePass = "password"
       keyAlias = "server"
       clientAuth = "false" sslProtocol = "TLS"
/>  

c. java.lang.IllegalArgumentException: Illegal character in opaque part at index 2: c:\certificate\myKey.jks

<Connector port = "8443" maxHttpHeaderSize = "8192" maxThreads = "150" minSpareThreads = "25" 
        maxSpareThreads = "150" scheme = "https" secure = "true" SSLEnabled = "true" 
        clientAuth = "false" sslProtocol = "TLS" keyAlias = "server" 
        keystoreFile = "c:\certificate\myKey.jks" 
        keystorePass = "password" />  

Используйте записи keystoreFile/keystorePass. Остальные предназначены для файлов PEM, а не для хранилищ ключей Java. c:\certificate\myKey.jks: все это должны быть косые черты.

user207421 02.05.2018 03:33

Спасибо, EJP. Я пропустил ошибку.

user1366518 02.05.2018 04:49

Я создал ключ с dnsName.com в качестве имени / фамилии. Я получил ошибку при попытке локальный: 8443 в браузере. В нем говорилось, что сертификат безопасности, представленный этим веб-сайтом, был выдан для другого адреса веб-сайта. Сертификат безопасности, представленный этим веб-сайтом, не был выпущен доверенным центром сертификации.

user1366518 02.05.2018 05:04

Добавляю в server.xml, вылезает ошибка памяти. Отладка <Host name = "dnsName.com" appBase = "webapps" unpackWARs = "true" autoDeploy = "true"> <Alias> www.dnsName.com </Alias> <Context path = "" docBase = "myAppURLafterPort #" = "0" Privileged = "true" /> <Valve className = "org.apache.catalina.valves.AccessLogValve" directory = "logs" prefix = "localhost_access_log." суффикс = ". txt" pattern = "% h% l% u% t & quot;% r & quot;% s% b" resolveHosts = "false" /> </Host>

user1366518 02.05.2018 05:05

Псевдонимы сертификатов вашего сервера не совпадают: в CSR вы использовали псевдоним server, а при импорте подписанного сертификата вы использовали tomcat. Вероятно, это нормально, поскольку Tomcat по умолчанию будет использовать сертификат с псевдонимом tomcat, но нет причин хранить как неподписанные, так и подписанные сертификаты в вашем хранилище ключей.

Christopher Schultz 06.05.2018 16:56
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
5
1 231
2

Ответы 2

Теперь я установил сертификат SSL и успешно запустил tomcat, но не могу http: // локальный: 8443.
Я получаю страницу не может быть отображено сообщение • Убедитесь, что веб-адрес http: // локальный: 443 правильный.

http: // локальный: 8080 / все еще работает

Любое предложение искренне приветствуется.

<Connector port = "8443" maxThreads = "200" scheme = "https" secure = "true"   SSLEnabled = "true" keystoreFile = "E:/tomcat/certificate/mykey.jks" keystorePass = "mypassword" keyAlias = "server" clientAuth = "false" sslProtocol = "TLS"/>  

конец журнала tomcat: 02-мая-2018 09: 06: 14.192 INFO [main] org.apache.coyote.AbstractProtocol.start Запуск ProtocolHandler ["http-nio-8080"] 02-мая-2018 09: 06: 14.207 INFO [main] org.apache.coyote.AbstractProtocol.start Запуск ProtocolHandler ["https-openssl-nio-8443"] 02-мая-2018 09: 06: 14.207 INFO [main] org.apache.coyote.AbstractProtocol.start Запуск ProtocolHandler ["ajp-nio-8009"]

Убедитесь, что у вас правильный URL: локальный: 8443 Браузеры обычно не знают, что это https-порт, и попробуйте простой http.

DrHopfen 02.05.2018 15:51

DrHopfen, спасибо

user1366518 03.05.2018 03:02

Важная часть - это httpS

DrHopfen 03.05.2018 10:22

Чтобы прояснить свой вопрос, отредактируйте вопрос. Не публикуйте дополнительный вопрос в качестве ответа на исходный вопрос.

Christopher Schultz 06.05.2018 16:55

пробовали ли вы использовать org.apache.coyote.http11.Http11NioProtocol вместо org.apache.coyote.http11.Http11AprProtocol?

    <Connector executor = "tomcatThreadPool"
               port = "80" protocol = "HTTP/1.1"
               connectionTimeout = "20000"
               redirectPort = "443" />
<Connector 
port = "443" 
protocol = "org.apache.coyote.http11.Http11NioProtocol" SSLEnabled = "true" 
maxThreads = "150" 
scheme = "https" 
secure = "true"                   
clientAuth = "false" 
sslProtocol = "TLS"
keystoreFile = "mySSL.jks"
keystorePass = "changeit" />

Другие вопросы по теме