Не удается исправить ошибку:0909006C:Процедуры PEM:get_name:нет начальной строки для сервера tomcat

#java #http #ssl #tomcat #https

Вопрос:

Я пытался запустить HTTP/2 на сервере tomcat, похоже, я не могу исправить эту ошибку: ошибка:0909006C:процедуры PEM:get_name:нет начальной строки.

Ключ и сертификат, которые я сгенерировал, были созданы с помощью OpenSSL. Они находятся в правильном формате (начинается с ——НАЧИНАЕТСЯ). Мне не нужно преобразовывать их в .pem.

Это мое server.xml:

 lt;Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"   maxThreads="150" SSLEnabled="true" gt;   lt;UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /gt;   lt;SSLHostConfiggt;   lt;Certificate certificateKeyFile="conf/ssl/cert.key"   certificateFile="conf/ssl/cert.crt"   type="RSA" /gt;   lt;/SSLHostConfiggt;  lt;/Connectorgt;  

А это мой файл журнала:

 12-Nov-2021 09:33:51.072 WARNING [main] org.apache.tomcat.util.net.openssl.OpenSSLContext.init Error initializing SSL context  java.lang.Exception: Unable to load certificate key /opt/LCM/LCM-AppServer/tomcat/conf/ssl/cert.key (error:0909006C:PEM routines:get_name:no start line)  at org.apache.tomcat.jni.SSLContext.setCertificate(Native Method)  at org.apache.tomcat.util.net.openssl.OpenSSLContext.addCertificate(OpenSSLContext.java:380)  at org.apache.tomcat.util.net.openssl.OpenSSLContext.init(OpenSSLContext.java:250)  at org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:247)  at org.apache.tomcat.util.net.AprEndpoint.createSSLContext(AprEndpoint.java:397)  at org.apache.tomcat.util.net.AprEndpoint.bind(AprEndpoint.java:363)  at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1141)  at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1154)  at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:581)  at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:74)  at org.apache.catalina.connector.Connector.initInternal(Connector.java:1010)  at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)  at org.apache.catalina.core.StandardService.initInternal(StandardService.java:533)  at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)  at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:1057)  at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)  at org.apache.catalina.startup.Catalina.load(Catalina.java:584)  at org.apache.catalina.startup.Catalina.load(Catalina.java:607)  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  at java.lang.reflect.Method.invoke(Method.java:498)  at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:303)  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473) 12-Nov-2021 09:33:51.122 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [5,748] milliseconds 12-Nov-2021 09:39:38.507 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [345,824] milliseconds  

Мой коллега попытался запустить точно мою конфигурацию, используя те же файлы сертификатов/ключей на win10, и для них это работает. Мой кот работает на виртуальной машине Ubuntu.

У меня есть эти зависимости:

 sudo apt-get install libapr1-dev libssl-dev  

И извлеченные и скомпилированные bin/tomcat-native.tar.gz.

Я не могу подключиться к tomcat из-за ошибки, упомянутой выше, chrome выдает мне эту ошибку: ERR_SSL_PROTOCOL_ERROR.

Любая помощь будет признательна. Спасибо!

Комментарии:

1. Не могли бы вы проверить формат файла? Есть ли пустые строки вверху? Может быть, также откройте его с помощью Notepad и отредактируйте —gt; Преобразование EOL —gt;gt; Unix

2. @SusanMustafa OpenSSL (который использует tcnative/APR) игнорирует «дополнительные» строки (пустые или нет) перед начальной строкой и обрабатывает оба EOL. Однако его путают пробелы или невидимые символы в одной и той же обычно первой строке , такие как BOM (популярная, если какая-либо программа Windows когда-либо касалась файла), ZWJ/ZWNJ или BiDi. Звуковой сигнал: попробуйте cat -vET или od -c в своем файле, чтобы точно увидеть, что в нем.

3. Оказалось, после каждого ./shutdown.sh и ./startup.sh файлы .cert и .key были повреждены. Оба файла в конечном счете были в порядке. Мне показалось, что, когда я понял, что файлы были повреждены после каждого перезапуска tomcat, он просто внезапно исправился.