Код ошибки: SEC_ERROR_BAD_SIGNATURE установил сертификат SSL на Tomcat - PullRequest
1 голос
/ 06 января 2020

Я купил сертификат SSL от Comodo для своего домена. Comodo предоставил мне следующие файлы:

  1. SSL_PrivateKEY_ www_my-domain_com.txt
  2. SSL_CSR_ www_my-domain_com.txt
  3. AddTrustExternalCA Root .crt
  4. USERTrustRSAAddTrustCA.crt
  5. SectigoRSADomainValidationSecureServerCA.crt
  6. www_my-domain_com.crt

После исследования я обнаружил, что Шаги для создания хранилища ключей .jks с использованием .key и .crt файлы ... , я использую файлы 3,4 и 5 crt и создаю cert.pem, затем я использую 1 crt для создания key.pem. После этого я создаю JKS, как говорит гид. Затем я импортирую файл 6 crt в хранилище ключей, например:

keytool -import -alias mykey -file www_my-domain_com.crt -keystore www_my-domain_com.jks

После этого я использую проводник хранилища ключей для преобразования моего хранилища ключей в PKCS12. Наконец, я загружаю файл на свой сервер, и вот мой tomcat 8, разъем:

<Connector port="9443" maxHttpHeaderSize="8192" maxThreads="100"
           minSpareThreads="25" maxSpareThreads="75"
           enableLookups="false" disableUploadTimeout="true"
           acceptCount="100" scheme="https" secure="true"
           protocol="org.apache.coyote.http11.Http11Protocol"
           SSLEnabled="true" clientAuth="false"
           keyAlias="server" sslProtocol="TLS" sslEnabledProtocols="TLSv1.2,TLSv1.1,TLSv1"
           keystoreFile="/home/test/ssls/www_my-domain_com.jks"
           keystorePass="password" />

Перезапускаю свой tomcat и затем ошибку, которую я получаю при firefox

Код ошибки: SEC_ERROR_BAD_SIGNATURE

Я также использую проводник хранилища ключей, чтобы проверить ssl, и отображается сообщение об ошибке:

javax.net.ssl.SSLKeyException: Invalid signature on ECDH server key exchange message
    at sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.<init>(Unknown Source)
    at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
    at sun.security.ssl.Handshaker.processLoop(Unknown Source)
    at sun.security.ssl.Handshaker.process_record(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)
    at org.kse.utilities.ssl.SslUtils.readSSLConnectionInfos(SslUtils.java:116)
    at org.kse.gui.dialogs.DExaminingSsl$ExamineSsl.run(DExaminingSsl.java:207)
    at java.lang.Thread.run(Unknown Source)

1 Ответ

1 голос
/ 10 января 2020

Я нахожу решение, после того как установил контакт с поставщиком SSL-сертификатов:

  1. Во-первых, я должен создать текстовый файл пакета с именем my.bundle в следующем порядке:
  • SectigoRSADomainValidationSecureServerCA.crt
  • USERTrustRSAAddTrustCA.crt
  • AddTrustExternalCA Root .crt
Во-вторых, вы должны запустить с OpenSSL следующую команду:

openssl pkcs12 -export -in my.crt -inkey my.key -certfile my.bundle -out my.pfx

Если my.crt - это www_my-domain_com.crt, my.key - это ваш закрытый ключ, а my.bundle - это файл, который мы создали на предыдущем шаге.

Следующим шагом является выполнение команды:

keytool -importkeystore -srckeystore pkcs12FileName.p12 -srcstoretype pkcs12 -destkeystore jksFileName.jks -deststoretype jks

1033

1033 *1032* 1033 *1032* * Здесь pkcs12FileName.p12 - это файл, созданный на предыдущем шаге, переименуйте его в p12 ( конвертируйте формат pfx в p12 )

В следующем шаге просто преобразуйте jks, экспортированный из предыдущего шага, в тип pkcs12 с помощью KeyStore Explorer .

Наконец, Разъем Tomcat в conf / server. xml:

Разъем порта = "8443" maxHttpHeaderSize = "8192" maxThreads = "150" minSpareThreads = "25" maxSpareThreads = "75" enableLookups = "false" disableUploadTimeout = "true" SSLEnabled = "true" acceptCount = "100" схема = "https" secure = "true" clientAuth = "false" sslProtocol = "TLS" keystoreFile = "/ opt / sslcertificates / www_my-domain_com.jks "keystorePass =" mypassword "

И все работает отлично!

...