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

时间:2011-03-15 15:06:34

标签: windows ssl https jenkins continuous-integration

我们最近在Windows上设置了Jenkins CI服务器。现在,为了使用Active Directory身份验证,我想要求https(SSL / TLS)进行访问。鉴于此设置,建议的方法是什么?

3 个答案:

答案 0 :(得分:34)

转到%JENKINS_HOME%并修改jenkins.xml。如果您看到--httpPort=8080将其更改为--httpPort=-1 --httpsPort=8080,您可以将端口设置为您想要的任何内容,但在我的测试中(前一段时间,它可能已更改)如果您不保留{{1}然后Jenkins将始终使用8080.因此,如果您只是将--httpPort=<something>更改为--httpPort=8080,则端口8080仍将使用http。

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

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

答案 1 :(得分:18)

执行命令

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

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

build.jenkins-ci.org

State or province不能缩写。

执行命令

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

Jenkins.csr发送给您的证书提供商并申请PKCS#7证书,该证书的扩展名为.p7b,并以:

开头
-----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.xml出现问题而导致Jenkins未启动,请将(奇怪的Windows连字符)字符替换为实际-(ASCII连字符)。
  • 如果Jenkins启动但证书仍然显示为错误,请确保[Name of website]是不带https:示例的实际网址:https://build.jenkins-ci.org将是build.jenkins-ci.org
  • 如果不是问题,请使用.jks检查KeyStore Explorer文件。 “证书层次结构”应该表明每个证书都嵌套在另一个证书中;这是为了说明证书链。如果它显示彼此相邻的证书,那么它就不正确。
  • 如果它不能在特定端口上启动,例如443,则验证IIS或其他应用当前没有使用该端口。
  • 如果您可以在PC上看到该网站,而不是另一台PC,那么请确认您没有被防火墙阻止。

答案 2 :(得分:0)

第1步:在詹金名称上创建公共证书和私有证书(如果没有,则将它们转换为keyore文件) 步骤2:将公共证书导入浏览器证书管理员(导入所有选项卡) 第3步:使用包含公钥和私钥的JKS文件托管您的詹金。

有关步骤,请参阅“ Enable HTTPS in jenkins?