web-dev-qa-db-ja.com

これはどうですかJavaキーストア証明書はまだ有効ですか?

私は、Tomcatにデプロイされ、SSL(したがってキーストア)を使用する古いJavaアプリを維持しています。)このアプリはnotSSL証明書が不良/期限切れ/無効である場合でも起動します!

SSL証明書は毎年期限切れになるため、誰かがJKSに保存されている古い/期限切れの証明書を新しいもの(ITから提供されたもの)に置き換える必要があります。私は今年、そのプロセス/楽しみを始めています。

まず、JKSの内容を出力するkeytoolコマンドを実行しました。

keytool -list -v -keystore myapp.jks

出力を間違って読んでいない限り、2015年に期限切れになった証明書しか表示されません。そうだとすれば、このアプリは昨年、どれほどの期間稼働していたのでしょうか。私がdoしていることの1つは、2034年に有効期限が切れる「チェーン」内の証明書です。SSLチェーンも理解していないと思います。すべきですが、私の理論では、2034年に期限切れになる証明書が(どういうわけか)どういうわけか私のメイン証明書を有効なままにしています/ それは可能ですか?上記のリストコマンドの出力の検閲済み/要約は次のとおりです。

Keystore type: JKS
Keystore provider: Sun

Your keystore contains 1 entry

Alias name: blah
Creation date: May 1, 2014
Entry type: PrivateKeyEntry
Certificate chain length: 3
Certificate[1]:
Owner: blah
Issuer: blah
Serial number: blah
Valid from: Thu Feb 16 15:49:19 EST 2012 until: Mon Feb 16 15:49:19 EST 2015
Certificate fingerprints:
    MD5:  blah
    SHA1: blah
    SHA256: blah
    Signature algorithm name: SHA1withRSA
    Version: 3

Extensions: 

#1: ObjectId: blah Criticality=false
AuthorityInfoAccess [

...a lot of stuff omitted for brevity

Certificate[3]:
Owner: OU=Go Daddy Class 2 Certification Authority, O="The Go Daddy Group, Inc.", C=US
Issuer: OU=Go Daddy Class 2 Certification Authority, O="The Go Daddy Group, Inc.", C=US
Serial number: 0
Valid from: Tue Jun 29 13:06:20 EDT 2004 until: Thu Jun 29 13:06:20 EDT 2034
Certificate fingerprints:
    MD5:  blah
    SHA1: blah
    SHA256: blah
    Signature algorithm name: SHA1withRSA
    Version: 3

...a lot more stuff, again omitted for brevity

この証明書がまだ有効である理由を誰かが見ることができますか?!?

3
smeeb

証明書チェーンでは、基本的に、証明書の発行者が自分に代わって証明書を検証できるようにします。このインスタンスのGoDaddy証明書はルート認証局であり、ルートCAのIDを検証します。また、組織を表す中間証明書も発行します。これは、チェーン上のもう1つの証明書です。

途中で証明書が危険にさらされると、中間証明書の検証が停止し、GoDaddyが発行した他のすべてのドメイン証明書が無効になります。なぜ彼らはこれをしているのですか?これは、サーバーのIDが正当かどうかをCAとしてGoDaddyに要求できるため、クライアントです。ルートCA証明書はGoDaddyを識別し、すでに信頼されていることがわかっているため、ルートCAはクライアントに賛成または反対の資格を与えます。ほとんどのブラウザーには、この検証機能が組み込まれています。ブラウザーで、セキュリティで保護されたサイトの証明書が提示されると、緑色で表示されます。これは通常、ブラウザーが提示された証明書をCAに対して検証し、有効であると見なされたことを意味します。このチェーンで証明書の有効期限が切れると、クライアントはサーバーとの信頼を確立できません。

では、Javaでは何が起こるのでしょうか。 JKSファイルは基本的にキーストアであるだけでなく、Javaアプリケーションのトラストストアでもあります。トラストストアは、Javaクライアントが、通信を許可されている信頼できるサーバーのIDを検証するために使用するものです。一般的に、典型的なJVMで実行されている典型的なJavaアプリケーションでは、提示された証明書がトラストストアに存在しない限り、安全なネットワークリソースとのSSL接続は確立されません。この証明書は技術的に有効でない場合もあれば、自己署名されてルートCAによって検証されない場合もありますが、Javaアプリケーションにロードされている指定のトラストストアに存在する場合は、それはまだそれを信頼します。

あなたが説明しなかったのは、この証明書があなたが提供であるネットワークリソース、またはあなたが必須クライアントであるネットワークリソース用であるかどうかです。後者の場合、証明書が期限切れになるという警告が表示される可能性がありますが、信頼ストアにあるため、引き続き機能します。

4
maple_shaft