কীভাবে এসএসএল / https এর সাথে জেনকিন্স ব্যবহার করবেন


39

আমার একটি ফেডোরা সার্ভার চালু আছে জেনকিনস যা আমি ইয়মের মাধ্যমে ইনস্টল করি। সবকিছু ঠিক আছে, আমি এটি দিয়ে অ্যাক্সেস করতে পারি 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"

আপনি 1000 এর নীচে যে কোনও বন্দর ব্যবহার করতে অথথবাইন্ড ব্যবহার করতে পারেন এবং এখনও জেনকিনগুলি নন-রুট হিসাবে চালাতে পারেন।

উত্তর:


17

এই পৃষ্ঠায় এটি আপনাকে অ্যাপাচি (যা HTTPS পরিচালনা করবে) এর পিছনে সেট আপ করতে সহায়তা করবে: https://wiki.eclipse.org/Hudson-ci/Running_Hudson_behind_Apache

একটি "সাধারণ" বিপরীত প্রক্সি হওয়া ছাড়াও আপনার এটির প্রয়োজন হবে (সেই পৃষ্ঠায় প্রদর্শিত হিসাবে):

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

2
উত্তর দেওয়ার জন্য ধন্যবাদ. আমার অ্যাপাচি আপ এবং চলমান নেই, আমার কাছে কেবল জেনকিন্সের সাথে লিনাক্স সার্ভার রয়েছে।
টিম

3
এই ক্ষেত্রে, আপনার শংসাপত্র এবং ব্যবহারের সাথে একটি কীস্টোর তৈরি করুন httpsPort(এবং সম্পর্কিত প্যারামিটারগুলি): google.google.com/group/jenkinsci-users/browse_thread/thread/…
ব্রুনো

ঠিক আছে, কীস্টোরে আমার নিজের শংসাপত্র যুক্ত হয়েছে। তবে এখনই কী ডাকব? আমার এই কোথায় করা উচিত? In any case: if I put only --httpsPort=8443 or i put --httpsKeyStore=/ path/to/keystore --httpsKeyStorePassword=myPassowrd in my HUDSON_ARGS?
টিম

সমস্ত প্রয়োজনীয় প্যারামিটার (পোর্ট, স্টোরের অবস্থান এবং পাসওয়ার্ড) রাখুন। তারপরে, জেনকিন্স শুরু করুন এবং আপনার ব্রাউজারটিকে নির্দেশ করুন http://yourhostname:8443/
ব্রুনো

1
@ উমেশ.আবাত এখনই ঠিক করা উচিত।
ব্রুনো

21

আপনি যদি এনগিনেক্স ব্যবহার করেন এবং আপাচি ব্যবহার proxy_redirect http:// https://;না করেন তবে জেনকিন্স থেকে প্রতিক্রিয়া ফিরে আসার সাথে সাথে আপনি অবস্থানের শিরোনামটি পুনরায় লিখতে ব্যবহার করতে পারেন ।

একটি সম্পূর্ণ এনগিনেক্স সেটআপ যেখানে এসএসএল এনগিনেক্সের সাথে সমাপ্ত হয় এবং অভ্যন্তরীণভাবে জেনকিন্সের সাথে 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;
  }
}

14

মনে রাখবেন (কিছুটা সময়?) জেনকিনস আপনার জন্য কী তৈরি করতে পারে, আপনাকে যা করতে হবে তা --httpsPort=(portnum)প্যারামিটারটি সেট করা আছে JENKINS_ARGS

আমার ক্ষেত্রে আমি সেট করি JENKINS_PORT="-1"(HTTP অক্ষম করুন) এবং সেট করি --httpsPort=8080যা আমার নিজের উদ্দেশ্যে ভালভাবে কাজ করে।

কেবলমাত্র নোট করুন যে 1000 এর নীচের যে কোনও বন্দরটিতে সাধারণত রুট অ্যাক্সেসের প্রয়োজন হয়, তাই এর চেয়ে বেশি একটি বন্দর বেছে নিন ...

( আরও তথ্যের জন্য লিঙ্ক )


3

2
যদি পৃষ্ঠার নিজস্ব কী উত্পন্ন করার বিষয়ে কোনও উল্লেখ থাকে তবে এটি সুন্দর হবে - দুর্ভাগ্যক্রমে আপনাকে "বিদ্যমান শংসাপত্র" ব্যবহারের ক্ষেত্রে ডিফল্টের চেয়ে পৃথক পদক্ষেপের প্রয়োজন রয়েছে (যা নিজস্ব স্ব-উত্পন্ন একটি ব্যবহার করে)
অ্যাডাম রফার

1
সতর্কতা: স্ব-উত্পন্ন কীগুলির পক্ষে এটি যথেষ্ট সহজ; যাইহোক, আমি সেই নির্দেশাবলী একটি বাস্তব শংসাপত্রের সাথে ব্যবহার করার চেষ্টা করেছি, এবং কীস্টোরটি স্থাপন করা একটি বিশাল ব্যথা ছিল (যেহেতু কীস্টোরগুলির দুটি পাসওয়ার্ড রয়েছে এবং মানক সরঞ্জামগুলি এ সম্পর্কে সত্যই স্বচ্ছ নয়)।
ব্লেসরব্লেড

1
দ্রষ্টব্য: এটি ওপেনজেডিকে নিয়ে কাজ করে না, কেবল ওরাকল জেআরই-র সাথে, কারণ এটি নির্ভর করেsun.security.x509.CertAndKeyGen । এছাড়াও, এটি খুব সম্প্রতি পর্যন্ত জাভা 8 এর সাথে ভেঙে গেছে (জেনকিন্স ২.৩৮ এটি স্থির করে)। সবচেয়ে খারাপ হলেও, এই রিলিজের চেঞ্জলগ বলে 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

9

উবুন্টু সার্ভারের জন্য (ধরে নিই যে আপনি এটি ইনস্টল করেছেন apt-get install jenkins):

আপনি /etc/default/jenkinsফাইলটির নীচে সম্পাদনা করতে চান , জেনকিনস_আর্গগুলি সম্পাদনা করতে চান। আমার আরগগুলিতে, আমি HTTP অ্যাক্সেস অক্ষম করেছি (-1 ব্যবহার করে) এবং ডিফল্ট জেনকিন্স বন্দরে SSL (8080) রেখেছি SSL এখানে সর্বাধিক গুরুত্বপূর্ণ অংশটি হ'ল আপনি একটি httpsPort এবং শংসাপত্র / কী প্রেরণ করেছেন (আপনার যদি এটি থাকে, অন্যথায় আপনি সেগুলি নিজের থেকে উত্পন্ন উত্সাহিতের জন্য ছেড়ে দিতে পারেন)। আমি ক্র্যাচগুলি অ্যাপাচে রাখি এবং তারপরে এগুলি উভয়ের জন্যই ব্যবহার করি তবে আপনি সেগুলি যে কোনও জায়গায় রাখতে পারেন।

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 দেখুন


1
আপনি যে রফতানি পাসওয়ার্ড সরবরাহ opensslকরেছেন সেটি অনুরোধ করা "উত্স কীস্টোর পাসওয়ার্ড" এর সাথে মেলে তা নিশ্চিত করুন keytool। আরও, পাসওয়ার্ড ফাঁকা থাকতে পারে না।
বিশপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.