2016-10-06 9 views
6

JDK 1.7.0_80のThawteルート証明書が取り消されたようです。 https://www.thawte.com/roots/retired.htmlJDK 1.7 jarsigner with https tsaが動作しなくなった

7u80 jarsignerを使用しても機能しなくなり、ちょうど数日前に正常に機能しました。

/usr/java/jdk1.7.0_80/jre/../bin/jarsigner -keystore /home/build/keystore.p12 -storepass storepass -storetype pkcs12 -tsa https://timestamp.geotrust.com/tsa /home/build/jenkins/workspace/my-gui/target/my-gui-3.0.29-SNAPSHOT.jar comp 
jarsigner: unable to sign jar: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake 

古いものを削除した後で、Thawtes Timestamping CA証明書をcacertsにインポートしようとしました。 JDK 8u60からjarsignerのを使用して

wget https://www.thawte.com/roots/Thawte_Timestamping_CA.pem 

/usr/java/jdk1.7.0_80/bin/keytool -import -trustcacerts -alias verisigntsaca -file Thawte_Timestamping_CA.pem -keystore jre/lib/security/cacerts 
Enter keystore password: 
Trust this certificate? [no]: yes 
Certificate was added to keystore 

は動作しますので、私はJDK7にそのcacerts鍵をコピーしようとしたが、それはどちらか動作しませんでした。

Javadocのエラーのため、Java 8でまだコンパイルできません。私が見る唯一の解決策は、JDK7からJDK8 jarsignerへのシンボリックリンクを作成することです。

/usr/java/jdk1.8.0_60/jre/../bin/jarsigner -keystore /home/build/keystore.p12 -storepass storepass -storetype pkcs12 -tsa https://timestamp.geotrust.com/tsa /home/build/jenkins/workspace/my-gui/target/my-gui-3.0.29-SNAPSHOT.jar comp 
jar signed. 

私はdigicertするジオトラストからTSAを切り替えると、彼らは、HTTPSを使用していないので、それは、JDK 7で正常に動作します。 http://timestamp.digicert.com/

+0

セットアップをパッケージ化するときにADTで同じ問題が発生しました。デフォルトでは、同じtsa URLを使用します。私はJava 1.6.0_31を使用していますが、6時間前には大丈夫でした。あなたは、Java 7または8が使用されている場合、それは正常に動作すると言っていますか? – Nemi

+0

"tsaをgeotrustからdigicertに切り替えると、httpsを使用しないため、JDK 7でうまく動作します。http://timestamp.digicert.com/" FWIW、私はあなたが "http "、すなわち' http:// timestamp.geotrust.com'である。 – JonBrave

答えて

9

また、過去12時間以内にこの問題が発生しました。この問題は、証明書とは関係なく、タイムスタンプサーバーとの通信に使用されるプロトコルと関係しています。これは、JDK7で動作します、しかし、あなたは、jarsignerのコマンドに

-J-Dhttps.protocols=TLSv1.2 

を以下を追加する必要があるので、あなたのコマンドは次のようになります。

/usr/java/jdk1.7.0_80/jre/../bin/jarsigner -J-Dhttps.protocols=TLSv1.2 -keystore /home/build/keystore.p12 -storepass storepass -storetype pkcs12 -tsa https://timestamp.geotrust.com/tsa /home/build/jenkins/workspace/my-gui/target/my-gui-3.0.29-SNAPSHOT.jar comp 

ジオトラストは、TLSバージョン1.0の無効使用を持っているようです

GeoTrust Partner: Disable of Transport Layer Security (TLS) version 1.0 protocol

:以下のリンクは、この詳細な情報を提供するJava 7のデフォルトれています

希望すると便利です。

+0

それは解決策に見えました。 – DJViking

1

GeoTrustのリンクから、TLSv1.1がすべてのように思われます。また、「TLS、SSL、およびHTTPSの診断」リンクから、TLSv1.1をサポートする最も初期のJavaバージョンはJDK 6アップデート111です。したがって、これらのバージョンと同じくらい近いところで解決策が働く可能性があります。

私はこれをテストするためにJDK 6アップデート111に切り替えていません。古いバージョンのJavaに慣れ親しんだ顧客から、Javaのバージョンを切り捨てずにどのように使用できるかを知りたいと思っています。

補遺は:顧客がJDK8上にあるので、私はちょうどそれに切り替えると、上記示唆したように、これはTLSv1.2が

+0

有償サブスクリプションがないと、ダウンロードできる最新バージョンはJDK 6u45およびJDK 7u80です。 OpenJDK 7には最新のアップデートがあります。 – DJViking

1
JDK 8のデフォルトであるため-J-Dhttps.protocols = TLSv1.2を必要とせずに働きました

user1638152の回答は間違いなく正しいです。誰かが同じ問題を抱えていて、jarの署名がApache Antを使って行われている場合は、この情報を追加するだけです。 signjarタスク内の次の行を追加し

<sysproperty key="https.protocols" value="TLSv1.2" /> 

これは「-J-Dhttps.protocols = TLSv1.2」コマンドラインでないとまったく同じことを行います。

0

https://timestamp.geotrust.com/tsaはご利用いただけません。http://sha256timestamp.ws.symantec.com/sha256/timestampをご利用ください。

詳細については、Is http://timestamp.geotrust.com/tsa not longer available for SignTool?を参照してください。

+0

はい、TLSを使用しないDigiCert TSAを使用することもできます。 http://timestamp.digicert.com/。シマンテックは現在、SHA256タイムスタンプサーバーを使用する必要があり、従来のタイムスタンプサーバーを廃止した場合はSHA1を使用しないように指示しています。私はdigicertが自分のサーバーで何を使用しているのか分かりませんが。 – DJViking

関連する問題