HTTPS経由でWebサービスを使用するJava Webサービスクライアントがあります。
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の結果です)。
これは正しいです?
もしそうなら、ステップ1の証明書をIPベースのadddress(AAA.BBB.CCC.DDD
)でどのように機能させることができますか?
アップデート1( 2013年10 月23日15:37 MSK):同様の質問への回答として、私は以下を読みました。
そのサーバーを制御できない場合は、そのホスト名を使用します(既存の証明書にそのホスト名と一致するCNが少なくともある場合)。
「使用」とはどういう意味ですか?