Я выполнил инструкцию по созданию ключа и сертификата. Мне удалось успешно импортировать сертификат. Не могу правильно достать разъем.
Вот шаги и сообщения.
Генерация ключа
keytool -genkey -alias server -keyalg RSA -keysize 2048 -keystore myKey.jks -dname "CN=dnsName.com
Сгенерируйте запрос на подпись сертификата.
keytool -certreq -alias server -file myCSR.csr -keystore myKey.jks
Загрузите сертификат из CA: скопируйте содержимое myCSR в goDaddy и загрузите 3 файла: serialNumber-root.crt
, bundle-intermediate.crt
, *.pem
Установка 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
На данный момент все успешно.
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" />
Спасибо, EJP. Я пропустил ошибку.
Я создал ключ с dnsName.com в качестве имени / фамилии. Я получил ошибку при попытке локальный: 8443 в браузере. В нем говорилось, что сертификат безопасности, представленный этим веб-сайтом, был выдан для другого адреса веб-сайта. Сертификат безопасности, представленный этим веб-сайтом, не был выпущен доверенным центром сертификации.
Добавляю в 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>
Псевдонимы сертификатов вашего сервера не совпадают: в CSR вы использовали псевдоним server
, а при импорте подписанного сертификата вы использовали tomcat
. Вероятно, это нормально, поскольку Tomcat по умолчанию будет использовать сертификат с псевдонимом tomcat
, но нет причин хранить как неподписанные, так и подписанные сертификаты в вашем хранилище ключей.
Теперь я установил сертификат 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, спасибо
Важная часть - это httpS
Чтобы прояснить свой вопрос, отредактируйте вопрос. Не публикуйте дополнительный вопрос в качестве ответа на исходный вопрос.
пробовали ли вы использовать 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" />
Используйте записи
keystoreFile/keystorePass
. Остальные предназначены для файлов PEM, а не для хранилищ ключей Java.c:\certificate\myKey.jks
: все это должны быть косые черты.