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


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.