सवाल एसएसएल / https के साथ जेनकींस का उपयोग कैसे करें


मेरे पास एक फेडोरा सर्वर जेनकींस चला रहा है जिसे मैं यम के माध्यम से स्थापित करता हूं। सबकुछ ठीक है, मैं इसे एक्सेस कर सकता हूं http://ci.mydomain.com

लेकिन अब, मैं इसे एक्सेस करना चाहता हूं https://ci.mydomain.com इसलिए उपयोगकर्ता नाम और पासवर्ड के साथ लॉगिन एन्क्रिप्ट किया गया है।

मैं यह कैसे कर सकता हूँ?

निम्नलिखित मेरा है /etc/sysconfig/jenkins फ़ाइल। जेनकींस काम शुरू करना, लेकिन मैं वेबब्रोसर के साथ जेनकींस तक नहीं पहुंच सकता https://ci.mydomain.com या http://ci.mydomain.com:443, ...

## Path:        Development/Jenkins
## Description: Configuration for the Jenkins continuous build server
## Type:        string
## Default:     "/var/lib/jenkins"
## ServiceRestart: jenkins
#
# Directory where Jenkins store its configuration and working
# files (checkouts, build reports, artifacts, ...).
#
JENKINS_HOME="/var/lib/jenkins"

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Java executable to run Jenkins
# When left empty, we'll try to find the suitable Java.
#
JENKINS_JAVA_CMD=""

## Type:        string
## Default:     "jenkins"
## ServiceRestart: jenkins
#
# Unix user account that runs the Jenkins daemon
# Be careful when you change this, as you need to update
# permissions of $JENKINS_HOME and /var/log/jenkins.
#
JENKINS_USER="jenkins"

## Type:        string
## Default:     "-Djava.awt.headless=true"
## ServiceRestart: jenkins
#
# Options to pass to java when running Jenkins.
#
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"

## Type:        integer(0:65535)
## Default:     8080
## ServiceRestart: jenkins
#
# Port Jenkins is listening on.
#
JENKINS_PORT="8080"

## Type:        integer(1:9)
## Default:     5
## ServiceRestart: jenkins
#
# Debug level for logs -- the higher the value, the more verbose.
# 5 is INFO.
#
JENKINS_DEBUG_LEVEL="5"

## Type:        yesno
## Default:     no
## ServiceRestart: jenkins
#
# Whether to enable access logging or not.
#
JENKINS_ENABLE_ACCESS_LOG="no"

## Type:        integer
## Default:     100
## ServiceRestart: jenkins
#
# Maximum number of HTTP worker threads.
#
JENKINS_HANDLER_MAX="100"

## Type:        integer
## Default:     20
## ServiceRestart: jenkins
#
# Maximum number of idle HTTP worker threads.
#
JENKINS_HANDLER_IDLE="20"

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Pass arbitrary arguments to Jenkins.
# Full option list: java -jar jenkins.war --help
#
JENKINS_ARGS="--httpsPort=443 --httpsKeyStore=/root/.keystore --httpsKeyStorePassword=MYPASSWORD"

37
2018-06-07 12:20


मूल


आप 1000 से नीचे किसी भी पोर्ट का उपयोग करने के लिए ऑथबिंड का उपयोग कर सकते हैं और अभी भी जेनकींस को गैर रूट के रूप में चला सकते हैं।


जवाब:


यह पृष्ठ आपको अपाचे के पीछे सेट करने में मदद करेगा (जो HTTPS को संभालेगा): https://wiki.eclipse.org/Hudson-ci/Running_Hudson_behind_Apache

"सामान्य" रिवर्स-प्रॉक्सी होने के अलावा, आपको इसकी आवश्यकता होगी (जैसा कि उस पृष्ठ पर दिखाया गया है):

Header edit Location ^http://www.example.com/hudson/ https://www.example.com/hudson/

15
2018-06-07 13:01



उत्तर के लिए धन्यवाद। मेरे पास अपाचे अप नहीं है और चल रहा है, मेरे पास केवल जेनकींस के साथ लिनक्स सर्वर है। - Tim
इस मामले में, अपने प्रमाणपत्र और उपयोग के साथ एक keystore बनाएँ httpsPort (और संबंधित पैरामीटर): groups.google.com/group/jenkinsci-users/browse_thread/thread/... - Bruno
ठीक है, मेरे पास अपना खुद का प्रमाणपत्र कुंजीस्टोर में जोड़ा गया है। लेकिन अब मुझे क्या कहना चाहिए? मुझे यह कहां करना चाहिए? In any case: if I put only --httpsPort=8443 or i put --httpsKeyStore=/ path/to/keystore --httpsKeyStorePassword=myPassowrd in my HUDSON_ARGS? - Tim
सभी आवश्यक पैरामीटर (पोर्ट, स्टोर स्थान और पासवर्ड) रखें। फिर, जेनकींस शुरू करें और अपने ब्राउज़र को इंगित करें http://yourhostname:8443/। - Bruno
@ उमेश.बहाट इसे अभी तय किया जाना चाहिए। - Bruno


बस अगर आप Nginx का उपयोग कर रहे हैं और अपाचे नहीं हैं, तो आप इसका उपयोग करना चाहेंगे proxy_redirect http:// https://; स्थान शीर्षलेख को फिर से लिखने के लिए प्रतिक्रिया प्रतिक्रिया जेनकिंस से वापस आती है।

एक पूर्ण nginx सेटअप जहां SSL को Nginx के साथ समाप्त कर दिया गया है और 8080 का उपयोग कर जेनकींस में आंतरिक रूप से प्रॉक्सी किया गया हो सकता है:

upstream jenkins {
  server 127.0.0.1:8080 fail_timeout=0;
}

server {
  listen 80 default;
  server_name 127.0.0.1 *.mydomain.com;
  rewrite ^ https://$server_name$request_uri? permanent;
}

server {
  listen 443 default ssl;
  server_name 127.0.0.1 *.mydomain.com;

  ssl_certificate           /etc/ssl/certs/my.crt;
  ssl_certificate_key       /etc/ssl/private/my.key;

  ssl_session_timeout  5m;
  ssl_protocols  SSLv3 TLSv1;
  ssl_ciphers HIGH:!ADH:!MD5;
  ssl_prefer_server_ciphers on;

  # auth_basic            "Restricted";
  # auth_basic_user_file  /home/jenkins/htpasswd;

  location / {
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_redirect http:// https://;

    add_header Pragma "no-cache";

    proxy_pass http://jenkins;
  }
}

21
2018-03-27 13:18





ध्यान दें कि (कुछ समय के रूप में?) जेनकिंस आपके लिए कुंजी उत्पन्न कर सकता है, आपको बस इतना करना है कि सेट करना है --httpsPort=(portnum) पैरामीटर में JENKINS_ARGS

मेरे मामले में मैंने सेट किया JENKINS_PORT="-1" (http अक्षम करें) और सेट करें --httpsPort=8080 जो मेरे अपने उद्देश्यों के लिए अच्छा काम करता है।

बस ध्यान दें कि 1000 से नीचे के किसी भी बंदरगाह को आम तौर पर रूट पहुंच की आवश्यकता होती है, इसलिए उस से अधिक पोर्ट चुनें ...

(संपर्क अधिक जानकारी के लिए)


14
2017-09-28 20:09



wiki.jenkins-ci.org/display/JENKINS/... इस तरह से, इसके लिए आधिकारिक दस्तावेज है। - Jesse Glick
यह अच्छा होगा अगर उस पृष्ठ के पास अपनी कुंजी उत्पन्न करने के बारे में कोई उल्लेख था - दुर्भाग्यवश आपको यह देखते हुए इस क्षमता का अनुमान लगाना होगा कि "मौजूदा प्रमाणपत्र" के लिए डिफ़ॉल्ट रूप से अलग-अलग चरणों की आवश्यकता होती है (जो स्वयं से उत्पन्न स्वयं का उपयोग करता है) - Adam Rofer
चेतावनी: स्व-जेनरेट की गई कुंजी के लिए यह इतना आसान है; हालांकि, मैंने उन प्रमाणपत्रों का उपयोग वास्तविक प्रमाणपत्र के साथ करने का प्रयास किया, और कीस्टोर की स्थापना करना एक बड़ा दर्द था (क्योंकि कीस्टोरों के पास दो पासवर्ड हैं और मानक उपकरण वास्तव में इस बारे में पारदर्शी नहीं हैं)। - Blaisorblade
नोट: यह ओपनजेडीके के साथ काम नहीं करता है, केवल ओरेकल जेआरई के साथ, क्योंकि यह पर निर्भर करता है sun.security.x509.CertAndKeyGen। इसके अलावा, यह था जावा 8 के साथ टूटा हुआ हाल ही में जब तक (जेनकींस 2.38 तय है)। इससे भी बदतर, उस रिलीज के लिए चेंजलॉग कहता है This option is deprecated and will be removed in a future release. We strongly recommend you create self-signed certificates yourself and use --httpsKeyStore। - nh2


उबंटू सर्वर के लिए (मान लीजिए कि आपने इंस्टॉल किया है apt-get install jenkins):

आप संपादित करना चाहते हैं /etc/default/jenkins फ़ाइल के निचले हिस्से में, जेनकिन्स_र्ग संपादित करें। मेरे तर्कों में, मैंने http एक्सेस (-1 का उपयोग करके) अक्षम कर दिया है और डिफ़ॉल्ट जेनकिन्स पोर्ट (8080) पर SSL डाल दिया है। यहां सबसे महत्वपूर्ण हिस्सा यह है कि आपने एक httpsPort और प्रमाणपत्र / कुंजी भेजी है (यदि आपके पास कोई है, अन्यथा आप स्वयं को उत्पन्न किए गए व्यक्ति के लिए छोड़ सकते हैं)। मैं crache को apache में रखता हूं और फिर दोनों के लिए उनका उपयोग करता हूं, लेकिन आप उन्हें कहीं भी डाल सकते हैं।

JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpsPort=$HTTP_PORT --httpPort=-1 --httpsCertificate=/etc/apache2/ssl.crt/CERT.crt --httpsPrivateKey=/etc/apache2/ssl.key/KEY.key --ajp13Port=$AJP_PORT"

कुछ मामलों में, आपको जावा कुंजी स्टोर का उपयोग करना होगा। सबसे पहले, अपनी चाबियाँ कन्वर्ट करें:

openssl pkcs12 -inkey /var/lib/jenkins/jenkins.key.pem -in /var/lib/jenkins/jenkins.crt.pem  -export -out keys.pkcs12

keytool -importkeystore -srckeystore keys.pkcs12 -srcstoretype pkcs12 -destkeystore jenkins.jks

अब जेनकिन्स के तर्कों का प्रयोग करें

JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpsPort=$HTTP_PORT --httpPort=-1 --httpsKeyStore=/etc/apache2/ssl.crt/jenkins.jks --httpsKeyStorePassword=thePassword --ajp13Port=$AJP_PORT"

और देखें https://serverfault.com/a/569898/300544


9
2018-05-09 19:14



सुनिश्चित करें कि आप जिस निर्यात पासवर्ड को आपूर्ति करते हैं openssl द्वारा अनुरोध किया गया "स्रोत कीस्टोर पासवर्ड" से मेल खाता है keytool। आगे, पासवर्ड खाली नहीं हो सकता है। - bishop