0

Я пытаюсь заставить плагин работать. Sonarsource 5.6, плагин 1.2. У меня ошибка SSL, которая, по моему мнению, вызвана моим экземпляром предприятия github, имеющим сертификат SSL, предоставленный внутренним и, следовательно, ненадежным ЦС (или, возможно, просто не настроенный правильно). Журнал скопирован ниже.Установка SonarQube - плагин аутентификации Github с ошибкой «PKIX path building failed»

Какие у меня варианты? Я думаю, что

  • можно скачать через sudo docker exec <my container id> openssl s_client -connect my-sonarqube-hostname:443 -showcerts сертификаты, а затем (если бы я знал, что я делаю) использовать keytool, чтобы ... совать его в магазин (?)
  • я мог отключить CERT проверку а) если бы я знал, и б), если бы я подумал, что было бы нормально рисковать MITM для чего-то, что у меня будет иметь исходный код (я не знаю)
  • Я мог бы попытаться понять статьи, как показано ниже, но все они кажутся включите компиляцию чего-либо, чтобы получить сертификат, чтобы поместить его в магазин
  • Я мог бы попытаться получить команду, которая владеет GHE использовать реальный сертификат
  • ....? что-нибудь еще?

Я бегу sonarqube в Докер контейнере на экземпляре Amazon EC2 Linux - очень легко начать работать с, но сейчас сложно изменить (хотя я предполагаю, что я мог бы вытащить Dockerfile и вилку - я сомневаюсь, что мой проблема является уникальной для внутренних установок, так что, может быть, все, что я придумываю стоит вклада обратно)

журналов:

2016.06.10 07:50:01 ERROR web[o.s.s.a.AuthenticationError] Fail to callback authentication with 'github' 
com.github.scribejava.core.exceptions.OAuthConnectionException: There was a problem while creating a connection to the remote service: https://my-github-enterprise-hostname/login/oauth/access_token?client_id=02e2f2cd8f567478c80d&client_secret=68c1ec2fe7d5c99a75e478c476965bdbefdc55dd&code=1b8c6e1323ef66e7a8f0&redirect_uri=https%3A%2F%2Fmy-sonarqube-hostname%2Foauth2%2Fcallback%2Fgithub 
     at com.github.scribejava.core.model.OAuthRequest.send(OAuthRequest.java:39) ~[na:na] 
     at com.github.scribejava.core.oauth.OAuth20ServiceImpl.getAccessToken(OAuth20ServiceImpl.java:36) ~[na:na] 
     at org.sonarsource.auth.github.GitHubIdentityProvider.callback(GitHubIdentityProvider.java:111) ~[na:na] 
     at org.sonar.server.authentication.OAuth2CallbackFilter.doFilter(OAuth2CallbackFilter.java:71) ~[sonar-server-5.6.jar:na] 
     at org.sonar.server.platform.MasterServletFilter$GodFilterChain.doFilter(MasterServletFilter.java:125) [sonar-server-5.6.jar:na] 
     at org.sonar.server.platform.MasterServletFilter.doFilter(MasterServletFilter.java:94) [sonar-server-5.6.jar:na] 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [tomcat-embed-core-8.0.30.jar:8.0.30] 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [tomcat-embed-core-8.0.30.jar:8.0.30] 
     at org.sonar.server.user.UserSessionFilter.doFilter(UserSessionFilter.java:59) [sonar-server-5.6.jar:na] 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [tomcat-embed-core-8.0.30.jar:8.0.30] 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [tomcat-embed-core-8.0.30.jar:8.0.30] 
     at org.sonar.server.platform.ProfilingFilter.doFilter(ProfilingFilter.java:84) [sonar-server-5.6.jar:na] 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [tomcat-embed-core-8.0.30.jar:8.0.30] 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [tomcat-embed-core-8.0.30.jar:8.0.30] 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) [tomcat-embed-core-8.0.30.jar:8.0.30] 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) [tomcat-embed-core-8.0.30.jar:8.0.30] 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) [tomcat-embed-core-8.0.30.jar:8.0.30] 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [tomcat-embed-core-8.0.30.jar:8.0.30] 
     at ch.qos.logback.access.tomcat.LogbackValve.invoke(LogbackValve.java:191) [logback-access-1.1.3.jar:na] 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) [tomcat-embed-core-8.0.30.jar:8.0.30] 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521) [tomcat-embed-core-8.0.30.jar:8.0.30] 
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096) [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_91] 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_91] 
     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_91] 
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
     at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) ~[na:1.8.0_91] 
     at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949) ~[na:1.8.0_91] 
     at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302) ~[na:1.8.0_91] 
     at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296) ~[na:1.8.0_91] 
     at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1509) ~[na:1.8.0_91] 
     at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) ~[na:1.8.0_91] 
     at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979) ~[na:1.8.0_91] 
     at sun.security.ssl.Handshaker.process_record(Handshaker.java:914) ~[na:1.8.0_91] 
     at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062) ~[na:1.8.0_91] 
     at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) ~[na:1.8.0_91] 
     at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) ~[na:1.8.0_91] 
     at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387) ~[na:1.8.0_91] 
     at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559) ~[na:1.8.0_91] 
     at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) ~[na:1.8.0_91] 
     at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153) ~[na:1.8.0_91] 
     at com.github.scribejava.core.model.Response.<init>(Response.java:30) ~[na:na] 
     at com.github.scribejava.core.model.OAuthRequest.doSend(OAuthRequest.java:57) ~[na:na] 
     at com.github.scribejava.core.model.OAuthRequest.send(OAuthRequest.java:37) ~[na:na] 
     ... 28 common frames omitted 
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
     at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387) ~[na:1.8.0_91] 
     at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) ~[na:1.8.0_91] 
     at sun.security.validator.Validator.validate(Validator.java:260) ~[na:1.8.0_91] 
     at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324) ~[na:1.8.0_91] 
     at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229) ~[na:1.8.0_91] 
     at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124) ~[na:1.8.0_91] 
     at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491) ~[na:1.8.0_91] 
     ... 41 common frames omitted 
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
     at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141) ~[na:1.8.0_91] 
     at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126) ~[na:1.8.0_91] 
     at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280) ~[na:1.8.0_91] 
     at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382) ~[na:1.8.0_91] 
     ... 47 common frames omitted 

ответ

1

я в конечном итоге делает

#!/bin/bash 
HOST=my-github-hostname 
PORT=443 
KEYSTOREFILE=/etc/ssl/certs/java/cacerts 
KEYSTOREPASS=changeit 

# get the SSL certificate 
openssl s_client -connect ${HOST}:${PORT} </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ${HOST}.cert 

# copy it into the running docker container 
sudo docker cp ${HOST}.cert sonarqube-web:/opt/sonarqube/${HOST}.cert 

# import certificate into the container's keystore 

sudo docker exec sonarqube-web keytool -import -noprompt -trustcacerts -alias ${HOST} -file /opt/sonarqube/${HOST}.cert -keystore ${KEYSTOREFILE} -storepass ${KEYSTOREPASS} 

# verify we've got it. 
sudo docker exec sonarqube-web keytool -list -v -keystore ${KEYSTOREFILE} -storepass ${KEYSTOREPASS} -alias ${HOST} 

exit 0 

Я понимаю, модифицируя работает докер контейнер, вероятно, что-то я гореть, но Ото экземпляр будет получать свежую копию серт каждый раз, когда он бутстрэпами, так. ..

1

Мне кажется, что ваш URL Enterprise Github не подписан с сертификатом вашего приложения сервер принимает.

Ключ к серверу приложений keystore() должен быть добавлен к вашим серверам. Для этого используйте ключ keytool от JDK.

+0

Этот диагноз был точно прав. Благодаря; Я добрался так далеко. Я обнаружил, что документация, на которую вы указали, не так полезна кому-то, кто незнаком с java, как я, поэтому я написал некоторый скрипт с прописанными фактическими командами. –

 Смежные вопросы

  • Нет связанных вопросов^_^