我如何设置Jenkins CI在Windows上使用https?

我们最近在Windows上build立了Jenkins CI服务器。 现在为了使用活动目录authentication,我想要求https(SSL / TLS)进行访问。 鉴于此设置,build议如何做到这一点?

转到您的%JENKINS_HOME%并修改jenkins.xml。 你看到的地方--httpPort=-1 --httpsPort=8080你可以使任何你想要的端口当然,但在我的testing(前一段时间,它可能已经改变),如果你不不保留--httpPort=<something>然后jenkins将始终使用8080.所以,如果你简单地改变--httpsPort=8080--httpsPort=8080 ,端口8080仍然会使用http。

另外,如果您想使用自己的证书,则在本页底部有一些说明。

http://wiki.jenkins-ci.org/display/JENKINS/Starting+and+Accessing+Jenkins

跑:

 keytool -genkey -keyalg RSA -keystore Jenkins.jks -alias [Name of website] -keysize 2048 

回答记住First and last name是网站URL的问题,并且应该是小写。 例:

 build.jenkins-ci.org 

State or province不能缩写。

跑:

 keytool -certreq -Keystore jenkins.jks -alias [Name of website] -file jenkins.csr -keysize 2048 

Jenkins.csr发送到您的证书提供商,并请求具有.p7b扩展名的PKCS#7证书,并从以下位置开始:

 -----BEGIN PKCS #7 SIGNED DATA----- 

注意:试用证书通常不能以.p7b格式提供,但是您可以使用此工具组合.cer文件,但报告成功但不适用于我。 (https://www.sslshopper.com/ssl-converter.html);

跑:

 keytool -import -trustcacerts -file jenkins.p7b -keystore jenkins.jks -alias [Name of website] 

将Jenkins.xml中的arguments节点更改为以下预设。

 <arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=-1 --httpsPort=443 --httpsKeyStore="%BASE%\Cert\Jenkins.jks" --httpsKeyStorePassword=[Cert password from step 1]</arguments> 

故障排除:

  • 如果Jenkins没有从Jenkins.err.log读取最后一行。
  • 如果Jenkins由于Jenkins.xml的问题而无法启动,请将 (奇怪的Windows连字符)字符replace为实际的(ASCII连字符)。
  • 如果Jenkins开始,但是证书仍然读取不好,请确保[Name of website]是没有https:示例的实际URL https: build.jenkins-ci.org将是build.jenkins-ci.org
  • 如果不是这个问题,请使用KeyStore Explorer检查.jks文件。 “证书层次结构”应显示每个证书嵌套在另一个证书中; 这是为了说明证书链。 如果它显示彼此相邻的证书,那么它是不正确的。
  • 如果它不能在特定的端口上启动,例如443,那么validationIIS或其他应用程序当前不在使用该端口。
  • 如果您可以在PC上看到该站点,而不是另一台PC,则请确认您没有被防火墙阻止。