我如何设置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:
示例的实际URLhttps:
build.jenkins-ci.org
将是build.jenkins-ci.org
。 - 如果不是这个问题,请使用
KeyStore Explorer
检查.jks
文件。 “证书层次结构”应显示每个证书嵌套在另一个证书中; 这是为了说明证书链。 如果它显示彼此相邻的证书,那么它是不正确的。 - 如果它不能在特定的端口上启动,例如443,那么validationIIS或其他应用程序当前不在使用该端口。
- 如果您可以在PC上看到该站点,而不是另一台PC,则请确认您没有被防火墙阻止。