基本的に、パブリック IP ボットのパブリック ホスト名のないテスト サーバー (Linux ベース) があります。そのため、IPアドレスを使用してssl証明書を作成しようとしています. 私の Java アプリケーションが IP アドレスを使用して別のアプリケーションにアクセスできるようにするには、次のようにします。
https://210.10.10.10:8443/abc
以下の投稿に従いました: SSL証明書サーバー名はどのように解決されますか/キーツールを使用して代替名を追加できますか?
この例外を回避するために提案された両方の方法を試しましたが、機能していません。同じエラーが発生しています。
「openssl.cnf」を編集して追加してみました:
[req] req_extensions = v3_req [ v3_req ] # Extensions to add to a certificate request subjectAltName=IP:210.10.10.10 # or subjectAltName=DNS:www.example.com basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment
2. また、Java 1.7 keytool を使用してみました:
作成のように (Java 1.7 を持つ Windows で作成され、Java 1.6 で実行されているすべての証明書と jks ファイルを Linx サーバー環境にコピーしました):
keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore myServerKeystore2.jks -srckeystore serverCertAsPK12.p12 -srcstoretype PKCS12 -alias servercertificate -ext SAN=ip:210.10.10.10
私の環境設定は以下のようなものです: サーバーは Linux (CentOS)、Tomcat 6、JDK 1.6、アプリケーションは JAVA アプリケーションです Openssl を使用してすべての証明書と JKS を作成しました
まだ java.security.cert.CertificateException を取得中: サブジェクトの代替名の例外がありません。
次に、JKS ファイルを作成しようとし、Windows マシンで keytool (Java 1.7 env) を使用してデフォルトの javastore ファイル (cacerts) にインポートし、これらの JKS および cacert ファイルを Linux サーバーにエクスポートしました。
次に、まだ java.security.cert.CertificateException: No subject alternative names Exception も取得しています。
-------ブルーノへの返信で6月19日に以下を更新---------
以下は私のtomcat server.xml設定です:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
truststoreFile="/usr/local/apache-tomcat-6.0.37/conf/cacerts.jks" truststorePass="changeit"
keystoreFile="/usr/local/apache-tomcat-6.0.37/conf/myServerKeystore2.jks" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
ここで、「cacerts.jks」はクライアント キーストア ファイルで、「myServerKeystore2.jks」はサーバー キーストア ファイルです。
このチュートリアルの各手順に従って、openssl を使用して ssl 証明書を作成しました。
助けてください。