声呐升级后HTTPS失败

问题描述:

我刚完成从SonarQube 5.3到5.6的升级。我复制了先前的sonar.properties中的密钥/值。 Sonar能够启动HTTP,但在尝试仅使用先前正在运行的HTTPS启动时会产生错误。声呐升级后HTTPS失败

我周围HTTPS sonar.properties:

sonar.web.port=-1 
sonar.web.context=/sonar 
sonar.web.https.port=9000 
sonar.web.https.keyAlias=<confirmed alias> 
sonar.web.https.keyPass=<confirmed password> 
sonar.web.https.keystoreFile=<confirmed file> 
sonar.web.https.keystoreType=JKS 

与上述的配置中产生的错误:

2016.06.10 02:05:46 INFO web[o.s.p.ProcessEntryPoint] Starting web 
2016.06.10 02:05:46 WARN web[o.s.p.ProcessEntryPoint] Fail to start web 
java.lang.IllegalStateException: HTTP connectors are disabled 
     at org.sonar.server.app.TomcatConnectors.verify(TomcatConnectors.java:64) ~[sonar-server-5.6.jar:na] 
     at org.sonar.server.app.TomcatConnectors.configure(TomcatConnectors.java:54) ~[sonar-server-5.6.jar:na] 
     at org.sonar.server.app.EmbeddedTomcat.start(EmbeddedTomcat.java:59) ~[sonar-server-5.6.jar:na] 
     at org.sonar.server.app.WebServer.start(WebServer.java:42) [sonar-server-5.6.jar:na] 
     at org.sonar.process.ProcessEntryPoint.launch(ProcessEntryPoint.java:102) ~[sonar-process-5.6.jar:na] 
     at org.sonar.server.app.WebServer.main(WebServer.java:68) [sonar-server-5.6.jar:na] 

作为测试,我切换回到刚才HTTP:

sonar.web.port=9000 
sonar.web.context=/sonar 
#sonar.web.https.port=9000 
sonar.web.https.keyAlias=<confirmed alias> 
sonar.web.https.keyPass=<confirmed password> 
sonar.web.https.keystoreFile=<confirmed file> 
sonar.web.https.keystoreType=JKS 

来自该日志的信息:

2016.06.10 02:19:11 INFO web[o.s.s.a.TomcatAccessLog] Web server is started 
2016.06.10 02:19:11 INFO web[o.s.s.a.EmbeddedTomcat] HTTP connector enabled on port 9000 
2016.06.10 02:19:11 INFO web[o.a.c.h.Http11NioProcessor] Error parsing HTTP request header 
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. 
java.lang.IllegalArgumentException: Invalid character (CR or LF) found in method name 
     at org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:228) ~[tomcat-embed-core-8.0.30.jar:8.0.30] 
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1010) ~[tomcat-embed-core-8.0.30.jar:8.0.30] 
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674) [tomcat-embed-core-8.0.30.jar:8.0.30] 
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) [tomcat-embed-core-8.0.30.jar:8.0.30] 
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) [tomcat-embed-core-8.0.30.jar:8.0.30] 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_71] 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_71] 
     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.0.30.jar:8.0.30] 
     at java.lang.Thread.run(Thread.java:745) [na:1.8.0_71] 

我错过了什么导致HTTPS无法正常工作?

版本5.5中删除了对HTTPS的支持。声明sonar.web.https。*在conf/sonar.properties中不再存在。见http://docs.sonarqube.org/display/SONAR/Release+5.5+Upgrade+Noteshttps://jira.sonarsource.com/browse/SONAR-7411。出于安全原因,应该使用反向代理。

+0

我了解专业人士。但是,Sonar上的HTTPS配置只是可选的,因为否定了大多数情况。如果我想确保反向代理和我的应用程序服务器之间的连接,该怎么办? – DuckieHo

+1

@DuckieHo如果您的Web服务器和sonarqube位于同一台服务器上,则不需要使用本地主机连接。如果SonarQube位于另一台服务器上,并且您不信任这两台服务器之间的链接,只需在SonarQube前添加另一台Web服务器,使用此设置,您甚至可以只允许一个可访问它的IP列表。 –

+0

@EricHartmann感谢您的补充见解。功能的分离确实有意义,但该空间中的许多应用程序本身都支持HTTPS。不用担心,只需要配置其他东西。 – DuckieHo