WebSocketにsslを追加する際の問題点
WebSocketにsslを追加する際の問題点
[toc]です。
メモをする
エラーログと対処法
からエラーをコピーして、そのページで探してみてください。
// System.setProperty("javax.net.debug", "all") を使用します。
問題1:javax.net.ssl.SSLHandshakeException: 適切なプロトコルがありません
io.netty.handler.codec.DecoderException: javax.net.ssl.SSLHandshakeException.DecoderException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate).
原因:javax.net.ssl.SSLHandshakeException: 適切なプロトコルがない(プロトコルが無効、または暗号スイートが適切でない)
io.netty.handler.codec.DecoderException: javax.net.ssl.SSLHandshakeException.DecoderException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate).
シナリオ:パーミッションの問題
しばらく誤魔化した後、ようやく jdk 1.8 のせいでSSLがパーミッションを呼び出すことに問題があることに気づきました。
解決方法 jdk 1.8 のインストールディレクトリを探し、libsecurity の java.security の下にある jdk を探します。対応する SSLv3 を見つけて削除し、プロジェクトを再起動すれば問題ありません。(SSLv3を削除すると、SSLコールを許可することになります。)
問題 2: protocol_version, ERR_CERT_COMMON_NAME_INVALID, ERR_CERT_AUTHORITY_INVALID
原因:javax.net.ssl.SSLException: 致命的な警告を受け取りました: protocol_version
io.netty.handler.codec.DecoderException: javax.net.ssl.SSLException: 致命的な警告を受け取りました: protocol_version
原因:javax.net.ssl.SSLException: 致命的な警告を受け取りました: protocol_version
シナリオ:ウェブクライアントが証明書を信頼する必要がある
- err_cert_common_name_invalid
- err_cert_authority_invalid
-
解決方法
- クローム訪問 chrome://flags/#show-cert-link
- ローカルホストから読み込まれたリソースに対して無効な証明書を許可するを検索します。
- 有効に変更する
- ソリューションのソース https://jingyan.baidu.com/article/636f38bb64f3c0d6b9461046.html
内部エラー
問題 3: io.netty.handler.ssl.NotSslRecordException: SSL/TLS レコードではありません。
io.netty.handler.ssl.NotSslRecordException: SSL/TLSレコードではありません。
シナリオ
クライアントで Pipeline.addLast("ssl", new SslHandler(sslEngine))を実行します。
問題4:PKIXパスの構築に失敗、SSLEngineの一般的な問題、要求されたターゲットへの有効な認証パスを見つけることができない
018-08-17 15:35:55.250 DEBUG io.netty.handler.codec.http.websocketx.WebSocketClientHandshaker13 - WebSocket バージョン 13 クライアントハンドシェイクキー:txOihqp44yIRBkIiOqYQzA==, 予想される応答: cR25d0JOMq6RBX9igrELEfGejKA= - ウェブソケットバージョン 13 クライアントハンドシェイクキー:txOihqp44yIRBkIiOqYQzA==, 予想される応答:cR25d0JOMq6RBX9igrELEfGejKA= - webSocket version 13
2018-08-17 15:35:55.820 INFO com.lizhaoblog.server.channel.websocket.WebSocketClientHandlerTest - Exceptionが発生しました。
io.netty.handler.codec.DecoderException: javax.net.ssl.SSLHandshakeException: 一般的なSSLEngineの問題
原因:javax.net.ssl.SSLHandshakeException: 一般的なSSLEngineの問題
原因:javax.net.ssl.SSLHandshakeException.SSLHandshakeExceptionが発生しました。SSLEngine の一般的な問題
原因:sun.security.validator.ValidatorException: PKIX パスの構築に失敗しました: sun.security.provider.certpath. SunCertPathBuilderException: 要求されたターゲットに対する有効な認証パスを見つけることができません。
... 26件以上
原因: sun.security.provider.certpath.SunCertPathBuilderException: 要求されたターゲットに対する有効な証明書パスが見つかりません。
at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:392)
... 32件以上
原因: sun.security.provider.certpath.SunCertPathBuilderException: 要求されたターゲットへの有効な証明書パスが見つかりません。
シナリオ
-
自己生成した証明書、検証されていない、jdk に認識されていない
- サーバーの起動
- SSLCreリクエストを使用してjssecacertsを生成します。
- Replace jssecacerts with cacerts under D:\Program FilesJavajdk1.8.0_171‡jreibsecurity
-
名前を変更することを忘れないために
"`
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例