我们最近在Windows上设置了Jenkins CI服务器。现在,为了使用Active Directory身份验证,我想要求https(SSL / TLS)进行访问。鉴于此设置,建议的方法是什么?
答案 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.err.log
的最后几行。Jenkins.xml
出现问题而导致Jenkins未启动,请将–
(奇怪的Windows连字符)字符替换为实际-
(ASCII连字符)。[Name of website]
是不带https:
示例的实际网址:https://build.jenkins-ci.org
将是build.jenkins-ci.org
。.jks
检查KeyStore Explorer
文件。 “证书层次结构”应该表明每个证书都嵌套在另一个证书中;这是为了说明证书链。如果它显示彼此相邻的证书,那么它就不正确。答案 2 :(得分:0)
第1步:在詹金名称上创建公共证书和私有证书(如果没有,则将它们转换为keyore文件) 步骤2:将公共证书导入浏览器证书管理员(导入所有选项卡) 第3步:使用包含公钥和私钥的JKS文件托管您的詹金。
有关步骤,请参阅“ Enable HTTPS in jenkins?”