জেনকিনস সিএ স্বাক্ষরিত শংসাপত্রের সাথে পরিবেশন করবেন না


9

tl; dr স্থির

আমি স্ব-স্বাক্ষরিত শংসাপত্রের সাথে জেনকিন্স উদাহরণটি চালিয়ে যাচ্ছি, যা ব্রাউজারগুলিতে শংসাপত্রের বৈধতা ব্যতিক্রম তৈরি করার ঝামেলা বাদে বেশ কার্যকর। তাই আজ আমি স্টার্টএসএল থেকে একটি ফ্রি টায়ার 1 শংসাপত্র পেয়েছি , পথ পরিবর্তন করেছি /etc/sysconfig/jenkinsএবং পরিষেবাটি পুনরায় চালু করেছি, তবে এটি মোটেও কার্যকর হয় না:

$ openssl s_client -connect localhost:8080 -debug
CONNECTED(00000003)
write to 0xdce210 [0xdeeca0] (171 bytes => 171 (0xAB))
0000 - 16 03 01 00 a6 01 00 00-a2 03 03 52 e3 f5 18 90   ...........R....
0010 - e2 24 10 6a 6e ee 24 88-cd 52 e8 a8 0b 6f 71 85   .$.jn.$..R...oq.
0020 - 3f 5b a1 53 7b 2c 74 fe-a2 68 25 00 00 54 00 a3   ?[.S{,t..h%..T..
0030 - 00 9f 00 6b 00 6a 00 39-00 38 00 88 00 87 00 9d   ...k.j.9.8......
0040 - 00 3d 00 35 00 84 00 16-00 13 00 0a 00 a2 00 9e   .=.5............
0050 - 00 67 00 40 00 33 00 32-00 9a 00 99 00 45 00 44   .g.@.3.2.....E.D
0060 - 00 9c 00 3c 00 2f 00 96-00 41 00 07 00 05 00 04   ...<./...A......
0070 - 00 15 00 12 00 09 00 14-00 11 00 08 00 06 00 03   ................
0080 - 00 ff 01 00 00 25 00 23-00 00 00 0d 00 18 00 16   .....%.#........
0090 - 06 01 06 02 05 01 05 02-04 01 04 02 03 01 03 02   ................
00a0 - 02 01 02 02 01 01 00 0f-00 01 01                  ...........
read from 0xdce210 [0xdf4200] (7 bytes => 0 (0x0))
140506493065056:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:177:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 171 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---

/var/log/jenkins/jenkins.logবা এর মধ্যে ত্রুটির কোনও ইঙ্গিত নেই /var/log/messages।

openssl আমার শংসাপত্রটি বৈধ বলে মনে হচ্ছে:

openssl x509 -in jenkins.crt.pem -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 925667 (0xe1fe3)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=IL, O=StartCom Ltd., OU=Secure Digital Certificate Signing, CN=StartCom Class 1 Primary Intermediate Server CA
        Validity
            Not Before: Jan 24 16:19:28 2014 GMT
            Not After : Jan 25 15:09:34 2015 GMT
[...]

এটি একটি জাভা কীস্টোর ফাইলে রাখার পরেও এটি বৈধ বলে মনে হচ্ছে (বেনামে এফকিউডিএন):

$ keytool -list -keystore jenkins.jks
Enter keystore password:  

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

jenkins_domain_tld, Jan 25, 2014, trustedCertEntry,
Certificate fingerprint (MD5): 3D:6A:AB:83:0B:E8:21:DF:C3:17:E9:88:AD:19:24:EE

পুরানো স্ব-স্বাক্ষরিত শংসাপত্র কী স্টোরটি খুব আলাদা নয়:

$ keytool -list -keystore jenkins.jks.old
Enter keystore password:  

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

jenkins_domain_tld, Jan 11, 2014, PrivateKeyEntry, 
Certificate fingerprint (MD5): A6:4E:F6:E8:56:D1:30:5E:11:63:59:C0:AA:24:B2:4F

আমি সরাসরি সাথে শংসাপত্রটি ব্যবহার করার চেষ্টা করেছি JENKINS_ARGS="--httpsCertificate=/var/lib/jenkins/jenkins.crt.pem --httpsPrivateKey=/var/lib/jenkins/jenkins.key.pem", তবে জেনকিন্স একেবারেই শুরু করবে না:

Jan 25, 2014 5:22:47 PM winstone.Logger logInternal
SEVERE: Container startup failed
java.io.IOException: Failed to start a listener: winstone.HttpsConnectorFactory
        at winstone.Launcher.spawnListener(Launcher.java:209)
        at winstone.Launcher.<init>(Launcher.java:149)
        at winstone.Launcher.main(Launcher.java:354)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:622)
        at Main._main(Main.java:293)
        at Main.main(Main.java:98)
Caused by: java.io.IOException: DerValue.getBigInteger, not an int 48
        at sun.security.util.DerValue.getBigInteger(DerValue.java:508)
        at winstone.HttpsConnectorFactory.readPEMRSAPrivateKey(HttpsConnectorFactory.java:171)
        at winstone.HttpsConnectorFactory.start(HttpsConnectorFactory.java:90)
        at winstone.Launcher.spawnListener(Launcher.java:207)
        ... 8 more

মধ্যবর্তী শংসাপত্র ইনস্টল করার পরে:

$ keytool -list -keystore jenkins.jks
Enter keystore password:  

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 3 entries

sub.class1.server.ca, Jan 25, 2014, trustedCertEntry,
Certificate fingerprint (MD5): 30:B0:5A:F7:B2:F4:BE:0C:28:67:15:EA:CC:5B:24:20
ca, Jan 25, 2014, trustedCertEntry,
Certificate fingerprint (MD5): 22:4D:8F:8A:FC:F7:35:C2:BB:57:34:90:7B:8B:22:16
jenkins_domain_tld, Jan 25, 2014, trustedCertEntry,
Certificate fingerprint (MD5): 3D:6A:AB:83:0B:E8:21:DF:C3:17:E9:88:AD:19:24:EE

জাভা সংস্করণ:

java version "1.7.0_51"
OpenJDK Runtime Environment (IcedTea 2.4.4) (ArchLinux build 7.u51_2.4.4-1-x86_64)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)

এটি কোনও পরিবর্তন বলে মনে হচ্ছে না।

JENKINS_DEBUG_LEVEL="99"যতদূর আমি বলতে পারি সেটিং কোনও প্রাসঙ্গিক লগ লাইন তৈরি করে নি।

আমি বিশ্বাস করি যে পুরানো সিএসআরটি 2048 বিট এবং 4096 ব্যবহার করে নতুন তৈরি করা হয়েছিল - এটি কি কোনও সম্ভাব্য কারণ?

উভয় পাবলিক কীগুলি 2048 বিট আরএসএ।

মতে diff -u <(openssl x509 -in jenkins.crt.pem.old -text) <(openssl x509 -in jenkins.crt.pem -text)ব্যবহৃত পুরাতন সার্টিফিকেট sha256WithRSAEncryptionনতুন একটি ব্যবহার করার সময় sha1WithRSAEncryptionস্বাক্ষর অ্যালগোরিদম।

ওরফে কি আদৌ গুরুত্বপূর্ণ? জেনকিন্স কি 2048 বিটের চেয়ে বেশি কীগুলি সমর্থন করে না? জেনকিনস / ওপেনজেডিকে / অ্যামাজন লিনাক্স কিছু কী দিয়ে কাজ করে না?

আমার আর কি চেক করা উচিত?


এই ব্যক্তিকে ভিন্ন পরিবেশে স্টার্টএসএসএল সার্টে যেতে সমস্যা হয়। serverfault.com/questions/569803/…
— জেসনআজ

উত্তর:


9

আমি বিশ্বাস করি আপনার একটি প্রাইভেটকি এন্ট্রি দরকার হবে।

আপনি কীটোলের পরিবর্তে ওপেন এসএসএল দিয়ে সিএসআর তৈরি করেছেন।

আপনি চেষ্টা করতে পারেন:

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

একটি রেফারেন্সের জন্য এটি দেখুন:

/programming/6252045/creating-a-keystore-from-private-key-and-a-public-key

আপনি যদি আপনার পুরানো কীস্টোরটি দেখে থাকেন তবে এন্ট্রিটি প্রাইভেট বনাম বিশ্বাসযোগ্য।


প্রচুর পরিমাণে ঝাঁকুনির পরে ( keytoolদীর্ঘ পাসওয়ার্ডগুলি হ্যান্ডেল করতে ব্যর্থ হয় ) আমি এটি রূপান্তর করতে সক্ষম হয়েছি এবং তারপরে এটি কার্যকর হয়েছিল।
— l0b0
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.