আমার একটি জাভা ওয়েব সার্ভিস ক্লায়েন্ট রয়েছে, যা এইচটিটিপিএসের মাধ্যমে একটি ওয়েব পরিষেবা গ্রহণ করে।
import javax.xml.ws.Service;
@WebServiceClient(name = "ISomeService", targetNamespace = "http://tempuri.org/", wsdlLocation = "...")
public class ISomeService
extends Service
{
public ISomeService() {
super(__getWsdlLocation(), ISOMESERVICE_QNAME);
}
যখন আমি পরিষেবা URL (সাথে সংযোগ https://AAA.BBB.CCC.DDD:9443/ISomeService
), আমি ব্যতিক্রম পেতে java.security.cert.CertificateException: No subject alternative names present
।
এটি ঠিক করার জন্য, আমি প্রথমে দৌড়েছি openssl s_client -showcerts -connect AAA.BBB.CCC.DDD:9443 > certs.txt
এবং ফাইলটিতে নিম্নলিখিত সামগ্রী পেয়েছি certs.txt
:
CONNECTED(00000003)
---
Certificate chain
0 s:/CN=someSubdomain.someorganisation.com
i:/CN=someSubdomain.someorganisation.com
-----BEGIN CERTIFICATE-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END CERTIFICATE-----
---
Server certificate
subject=/CN=someSubdomain.someorganisation.com
issuer=/CN=someSubdomain.someorganisation.com
---
No client certificate CA names sent
---
SSL handshake has read 489 bytes and written 236 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-MD5
Server public key is 512 bit
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : RC4-MD5
Session-ID: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Session-ID-ctx:
Master-Key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Key-Arg : None
Start Time: 1382521838
Timeout : 300 (sec)
Verify return code: 21 (unable to verify the first certificate)
---
আফাইক, এখন আমার দরকার
- অংশ নিষ্কর্ষ
certs.txt
মধ্যে-----BEGIN CERTIFICATE-----
এবং-----END CERTIFICATE-----
, - যাতে শংসাপত্র নাম সমান এটি পরিবর্তন
AAA.BBB.CCC.DDD
এবং - তারপরে ফলাফলটি আমদানি করুন
keytool -importcert -file fileWithModifiedCertificate
(যেখানেfileWithModifiedCertificate
1 এবং 2 অপারেশনের ফলাফল রয়েছে)।
এটা কি সঠিক?
যদি তা হয় তবে আইপি ভিত্তিক অ্যাড্রেস ( AAA.BBB.CCC.DDD
) দিয়ে আমি কীভাবে পদক্ষেপ 1 থেকে শংসাপত্রটি তৈরি করতে পারি ?
আপডেট 1 (23.10.2013 15:37 এমএসকে): অনুরূপ প্রশ্নের উত্তরে আমি নিম্নলিখিতটি পড়ি:
আপনি যদি সেই সার্ভারের নিয়ন্ত্রণে না থাকেন তবে এর হোস্টের নামটি ব্যবহার করুন (বিদ্যমান শংসাপত্রের মধ্যে হোস্টের নামের সাথে কমপক্ষে কোনও সিএন মিল আছে)।
"ব্যবহার" এর অর্থ কী?