Keytool、Tomcatサーバー、IEブラウザーはhttps双方向認証を構成します
まず、httpsの原理を簡単に説明します
1. HTTP、HTTPS、SSL、TLSの紹介と関係
(1)HTTP:Webを閲覧するときに通常使用されるプロトコル。HTTPプロトコルによって送信されるデータは暗号化されていない(プレーンテキスト)ため、HTTPプロトコルを使用した個人情報の送信は非常に安全ではありません。
(2)HTTPS:プライベートデータの暗号化された送信を保証するために、SSL / TLSプロトコルを使用して、HTTPプロトコル(HTTPS)によって送信されるデータを暗号化します。
(3)SSL:SSL(Secure Sockets Layer)プロトコルはNetscapeによって設計され、後にIETFによってRFC6101で定義されました。現在のバージョンは3.0です。
(4)TLS:TLSはSSLの改良版と言えます。これは、IETFによるSSL 3.0のアップグレードから生まれ、RFC2246で定義されています。実際、現在のHTTPSはTLSプロトコルです。
2. TLS / SSL機能
(1)HTTPSでは、データを送信する前に、クライアント(ブラウザ)とサーバー(Webサイト)の間でハンドシェイクが必要です。ハンドシェイクプロセス中に、送信されたデータを暗号化するための両当事者の暗号化情報が確立されます。
(2)TLS / SSLでは、非対称暗号化、対称暗号化、およびHASHアルゴリズムが使用されます。
非対称暗号化アルゴリズムは、ハンドシェイクプロセス中に生成されたパスワードを暗号化するために使用され、対称暗号化アルゴリズムは、実際に送信されるデータを暗号化するために使用され、HASHアルゴリズムは、データの整合性を検証するために使用されます。
(3)TLSハンドシェイク処理でエラーが発生した場合、暗号化された接続が切断され、個人情報の送信が妨げられます。
次のように進めます
Keytoolの自己署名証明書の生成、tomcatサーバーのインポート、ブラウザー認証
keytool自己署名証明書の生成
前提条件はJava環境を構成することであり、特定のメソッドはJava環境構成から学習できます。証明書を生成するためのkeytoolコマンドは、次のように学習されます。keytool学習の概要。
インターネット上で証明書を生成するためのさまざまな形式の例はたくさんありますが、以下についてコメントがある場合は、これらの形式の違いを学ぶことをお勧めします。CSRファイルとPEMファイルの違いは何ですか
次に、証明書生成のサンプルが必要です。
1.開き、CMDコマンドライン入力
keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\tomcat.keystore -validity 36500
(パラメーターの説明:「D:\ tomcat.keystore」は証明書ファイルを保存するパスを意味し、証明書ファイルの名前はtomcat.keystoreです。
「-validity36500」は証明書の有効期間を意味し、36500は100年を意味し、デフォルト値は90日です。 「Tomcat」はカスタム証明書の名前です)
2.キーストアパスワードを入力します:キーストアパスワード(hanggeを使用する場合)
名と姓は何ですか:TOMCAT展開ホストのドメイン名またはIP(将来ブラウザに入力するアクセスアドレス)である必要があります。それ以外の場合はブラウザです。警告ウィンドウがポップアップし、ユーザーの証明書がドメインと一致しないことを確認します。ローカルで開発およびテストする場合は、「localhost」と入力する必要があります。入力したキーパスワード:Enterキーを直接押します
3.サーバーが検証できるように、ブラウザーの証明書を生成します。証明書をIEにスムーズにインポートするには、証明書の形式をPKCS12にする必要があります。したがって、次のコマンドを使用して生成します。
keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore D:\mykey.p12
クライアント証明書のパスワードが「123456」であると仮定して、残りを入力します。
4.サーバーにクライアント証明書を信頼させます。サーバーがクライアント証明書を信頼する場合は、クライアント証明書をサーバーの信頼証明書として追加する必要があります。
(1)PKCS12形式の証明書ライブラリは直接インポートできないため、次のコマンドを使用して、クライアント証明書を個別のCERファイルとしてエクスポートする必要があります(以下では、クライアント証明書パスワード「123456」を使用します)。
keytool -export -alias mykey -keystore D:\mykey.p12 -storetype PKCS12 -storepass 123456 -rfc -file D:\mykey.cer
(2)ファイルをサーバーの証明書ストアにインポートし、信頼できる証明書として追加します。次のコマンドを使用します。
keytool -import -v -file D:\mykey.cer -keystore D:\tomcat.keystore
(3)listコマンドを使用してサーバー証明書ライブラリを表示すると、2つの証明書が表示されます。1つはサーバー証明書で、もう1つは信頼できるクライアント証明書です。
keytool -list -keystore D:\tomcat.keystore
5.クライアントにサーバー証明書を信頼させる
双方向SSL認証であるため、クライアントはサーバー証明書も検証する必要があります。サーバー証明書を個別のCERファイルとしてエクスポートしてクライアントに提供するには、次のコマンドを使用します。
keytool -keystore D:\tomcat.keystore -export -alias tomcat -file D:\tomcat.cer
準備は次のとおりです。生成された証明書
tomcatサーバーをインポートする
まず、Tomcatサーバーを準備する必要があります。私は個人的にバージョン8.5をダウンロードしました。ダウンロードと構成は、Tomcatのダウンロードとインストールから学ぶことができます。Tomcatを初めて使用する場合は、インストールディレクトリを開いて管理者権限に同意し(おそらく私の個人的なファイアウォール設定のため)、configure tomcatを使用する必要があります。サーバーのオンとオフを切り替えるには、以下の開始オプションと停止オプションがあります。ブラウザはデフォルトのlocalhost:8080を開き、Tomcatが正常に構成されているかどうかを確認します。
1. Tomcatインストールディレクトリを開き、 confの下にあるserver.xmlファイルを見つけて、次のコードセグメントを見つけて
変更します(元のコメントセグメントを削除しないことをお勧めします。コメントセグメントをコピーして変更すると、元のコードが記憶されないようになります。次に、変更した場合) server.xmlファイルの形式が正しくないため、Tomcatサーバーの再起動に失敗する可能性があります。変更する前にserver.xmlの元のバックアップを保存することもお勧めします)
<Connector port = "8443" protocol = "org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled = "true" maxThreads = "150" scheme = "https"
secure = "true" clientAuth = "true" sslProtocol = "TLS"
keystoreFile = "D:\tomcat.keystore" keystorePass = "hangge"
truststoreFile = "D:\tomcat.keystore" truststorePass = "hangge" />
属性の説明:
clientAuth:双方向認証を検証するかどうかを設定します。デフォルトはfalse、trueに設定すると双方向認証を意味しますkeystoreFile:サーバー証明書ファイルパス
keystorePass:サーバー証明書パスワードtruststoreFile:クライアント証明書のルート証明書を検証するために使用されます。この場合はサーバー証明書
truststorePassです。 :ルート証明書のパスワード
2.ここで操作するとき、インターネット上でのケースが非常に多いので、ポート8443とポート443の違いなども学びました。ここでは、Tomcatのバージョンの問題などにより、設定が非常に簡単で、ブラウザに「ページが見つからないためアクセスできません」と表示されます。server.xmlファイルのデバッグにもしばらくお待ちください。
3.学習プロセスでは</welcome-file-list>
、httpからhttpsへの自動ジャンプを試すこともできます。つまり、confの下のweb.xmlファイル形式の後にそのような段落を追加します。
<login-config>
<!-- Authorization setting for SSL -->
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<!-- Authorization setting for SSL -->
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
ブラウザ認証
私が試したのは、コンピューターのIEブラウザーでした。単純な自己署名証明書は安全性が高くなく、Chromeやその他のブラウザーは失敗する可能性があります(「無効な証明書」が表示されます)。
1.ブラウザにhttps:// localhost:8443 /と入力します(次の図は、tomcatのhttpsが正常にオンになっていることを示しています。クライアントが証明書をインポートしていないため、無効な証明書が報告されても問題ありません)
2。クライアント証明書をインポートします。ツール-「インターネットオプション」-「コンテンツ」-「証明書」-「個人」-「インポート」をクリックし、「次へ」をクリックして、mykey.p12ファイルを選択します。
前に設定したクライアント証明書パスワード「123456」を入力し、「次へ」をクリックして「OK」をクリックします。
3.ブラウザを再起動してhttps:// localhost:8443 /を開くと、次の図が表示されます
。4。[許可]をクリックして、クライアント証明書の正常な構成を表示します。
正常にアクセスできることがわかります(アドレスバーの「証明書エラー」は、双方向の検証がまだ行われていないことを示していますが、データはすでにHTTPSを使用して送信されています)
5。サーバーの公開鍵証明書(tomcat.cer)
は自己署名証明書であるため、インポートします。毎回危険を促すことは避けてください。ここでtomcat.cerをダブルクリックして、サーバー証明書をインストールします。
注:「信頼されたルート認証機関」に証明書を入力してください。サーバーに再度アクセスすると、安全でないプロンプトが表示されず、ブラウザーのアドレスバーに「ロック」アイコンが表示され、このセッションがHTTPS双方向認証に合格したことを示します。ページ更新の横にある[ロック]をクリックして、構成した証明書を表示します。
主な参考記事をご覧ください:Tomcatサーバー構成https双方向認証(keytoolを使用して証明書を生成します)