我有一个拥有本地IP的专用网络。 我想为我的Jenkins服务器启用HTTPS,这是静态IP W.X.Y.Z:8080。
Jenkins version 2.9
java version "1.7.0_111"
OpenJDK Runtime Environment (IcedTea 2.6.7) (7u111-2.6.7-0ubuntu0.14.04.3)
OpenJDK 64-Bit Server VM (build 24.111-b01, mixed mode)
我尝试在/ etc / defaults / jenkins文件中配置以下参数
HTTP_PORT=-1
JENKINS_ARGS="--webroot=/var/cache/$NAME/war -DsessionTimeout=1 --httpPort=$HTTP_PORT --httpsPort=8081"
但我收到以下错误。请帮忙
Running from: /usr/share/jenkins/jenkins.war
webroot: $user.home/.jenkins
Oct 19, 2016 2:18:48 PM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: Logging initialized @811ms
Oct 19, 2016 2:18:48 PM winstone.Logger logInternal
INFO: Beginning extraction from war file
Oct 19, 2016 2:18:48 PM org.eclipse.jetty.util.log.JavaUtilLog warn
WARNING: Empty contextPath
Using one-time self-signed certificate
Oct 19, 2016 2:18:48 PM winstone.Logger logInternal
INFO: Winstone shutdown successfully
Oct 19, 2016 2:18:48 PM winstone.Logger logInternal
SEVERE: Container startup failed
java.io.IOException: Failed to start a listener
winstone.HttpsConnectorFactory
at winstone.Launcher.spawnListener(Launcher.java:207)
at winstone.Launcher.<init>(Launcher.java:149)
at winstone.Launcher.main(Launcher.java:352)`enter code here`
at sun.reflect.NativeMethodAccessorImpl.invoke0
我发现这里解决了类似的问题,但它对我没有用处
EDIT1: 在/ etc / defaults / jenkins文件中尝试了以下更改并重新启动了jenkins,但它对我没有用。
HTTP_PORT=-1
JENKINS_ARGS="--webroot=/var/cache/$NAME/war -DsessionTimeout=1 --httpPort=$HTTP_PORT --httpsPort=8443 --httpsCertificate=cert.pem --httpsPrivateKey=key.pem
答案 0 :(得分:3)
您需要传递私钥的密钥库或.pem文件的参数
https://wiki.jenkins-ci.org/display/JENKINS/Starting+and+Accessing+Jenkins
答案 1 :(得分:1)
您可以按照以下步骤通过HTTPS启用Jenkin,
第1步:使用Java创建证书
keytool -genkey -keyalg RSA -alias“ localhost” -keystore“ C:\ Users \ username \ Desktop \ New folder \ localhost.jks” -validity 365 -keysize 2048 -dname“ CN = localhost,OU = OU_name, O = OU名称,L =城市,ST =州名称,C = two_letter_country_code“ -ext SAN = dns:localhost,ip:ip_address -storepass changeit
第2步:从密钥存储文件中导出p12公共证书
keytool -importkeystore -srckeystore“ C:\ Users \ username \ Desktop \ New folder \ localhost.jks” -storepass changeit -destkeystore“ C:\ Users \ username \ Desktop \ New folder \ localhost.p12” -srcstoretype JKS -deststoretype PKCS12 -deststorepass changeit
第3步:使用密钥存储(JKS)文件托管Jenkins
java -jar jenkins.war --httpsPort = 8082 --httpPort = -1 --httpsKeyStore =“ C:\ Users \ username \ Desktop \ New folder \ localhost.jks” --httpsKeyStorePassword = changeit
第4步:将证书导入浏览器
您可能有一个问题,例如为什么我们要导出p12证书...嗯,我们将这个证书导入到我们访问Jenkins的浏览器中。相同的p12证书可以在多个用户之间共享。 例如在 Chrome浏览器转到“设置”>“搜索”-“管理证书”,然后单击“管理证书”,您将获得“ 证书”窗口。 将证书导入到每个选项卡(人员,其他人,中级证书颁发机构,受信任的根证书颁发机构,受信任的出版商和不受信任的发布者)。
答案 2 :(得分:0)
这非常有趣。如果您有新的jenkins实例,它是旧jenkins实例的副本。将位于D:\ Jenkins \ jre \ lib \ security(样本目录结构)的cacerts复制到现有新jenkins实例的jre / secrets文件夹中。在jenkins.xml中相应地更改参数。 这是样本 -Xrs -Xmx256m -Dhudson.lifecycle = hudson.lifecycle.WindowsServiceLifecycle -jar&#34;%BASE%\ jenkins.war&#34; --httpPort = -1 --httpsPort = 8443 --httpsKeyStore =&#34;%BASE%\ secrets \ keystore&#34; --httpsKeyStorePassword = your.password.here
答案 3 :(得分:0)
(如果您具有有效的证书,并且不想为您的Jenkins启用HTTP,但是仍然希望SSL启用流量,那么这是另一种方法。)
就我而言,我将Jenkins放在Nginx Web服务器后面。
因此,请按以下步骤操作:
1。)我已经安装了Nginx服务器。 ( sudo apt-get install nginx )
2。)在该计算机上复制证书文件。 (文件为: .crt 和 .key )
3。)更改了 / etc / nginx / sites-available / default 文件中的Nginx配置。
喜欢
ssl_certificate /etc/nginx/<my-cert>.crt;
ssl_certificate_key /etc/nginx/<my-cert>.key;
4。)按照此处提到的步骤进行操作:https://wiki.jenkins.io/display/JENKINS/Running+Jenkins+behind+Nginx
5。)一切都像魅力一样……
通过执行这些步骤,请求流程将如下所示:
1。)请求转到Nginx Web服务器。
2。)有一个反向代理,它将流量重定向到localhost:8080(或自定义IP:端口)(运行Jenkins)。
3。)詹金斯(Jenkins)将处理请求并将响应发送给Nginx
4。)Nginx将返回响应。
注意:您可以对Apache,HAProxy和squid进行相同的操作。
(参考:https://wiki.jenkins.io/pages/viewpage.action?pageId=135468777,https://wiki.jenkins.io/display/JENKINS/Running+Jenkins+behind+Nginx)