自己署名証明書に関する問題のトラブルシューティング
ここにトピックの短い説明を入力します(オプション)。
表G-1 接続失敗のシナリオと解決策
CNの値 | クライアント接続URL | 接続の結果 |
---|---|---|
CN=localhost | https://localhost:8089 | 接続成功 |
CN=proxy-nosql.example.com | https://proxy-nosql.example.com:8089 | 接続成功 |
CN=*.example.com | https://proxy-nosql.example.com:8089 | 接続成功 |
CN=proxy-nosql | https://proxy-nosql:808 | 接続成功 |
CN=proxy-nosql.example.com | https://proxy-nosql:8089 | 接続失敗 |
CN=proxy-nosql.example.com | https://10.0.0.9:8089 | 接続失敗 |
CN=localhost | https://10.0.0.9:8089 | 接続失敗 |
CN=localhost | https://proxy-nosql:8089 | 接続失敗 |
CN=localhost | https://proxy-nosql.example.com:8089 | 接続失敗 |
CN=proxy-nosql | https://proxy-nosql.example.com:8089 | 接続失敗 |
CN=*.example.com | https://proxy-nosql.subdomain.example.com:8089 | 接続失敗 |
- クライアントは、Oracle NoSQL Databaseプロキシに接続しようとするときに、SSL証明書をフェッチし、接続先となるNoSQL Databaseプロキシ・サーバーのホスト名またはNoSQL Databaseプロキシ・サーバーのドメイン名を、そのSSL証明書内で指定されている共通名(CN)と比較します。それらが完全に同じである場合は、そのSSL証明書を使用して接続を暗号化します。そうでない場合は、接続に失敗します。
- 接続に失敗したら、CNを変更するかSANを追加して証明書を再生成する必要かあるかどうかを判断します。
例:
CN=proxy-nosql.example.com subjectAltName=DNS:proxy-nosql,DNS:localhost,IP:10.0.0.9,DNS:proxy-alias.example.com
エラーのシナリオと解決策の例:
例1: 値がCN=proxy-nosql.example.com
であり、アプリケーションがhttps://proxy-nosql:8089
を使用して接続しようとして、その接続に失敗します。
- クライアント接続URLを
https://proxy-nosql.example.com:8089
に変更できます。 - 証明書内のCNを
CN=proxy-nosql
に変更できます - proxy-nosqlをSANである
subjectAltName=DNS:proxy-nosql
として追加できます
例2: 値がCN=*.example.com
であり、アプリケーションがhttps://proxy-nosql.subdomain.example.com:8089
を使用して接続しようとして、その接続に失敗します。
- 証明書内のCNを
CN=*.subdomain.example.com
に変更できます - subdomain.example.comのSANである
subjectAltName=DNS:*.subdomain.example.com
を追加できます
例3: 値がCN=proxy-nosql.example.com
であり、アプリケーションがhttps://localhost:8089
を使用して接続しようとして、その接続に失敗します。
- クライアント接続URLを
https://proxy-nosql.example.com:8089
に変更できます。 - 証明書内のCNを
CN=localhost
に変更できます - localhostをSANである
subjectAltName=DNS:localhost
として追加できます
例4: 値がCN=proxy-nosql.example.com
であり、アプリケーションがhttps://10.0.0.9:8089
を使用して接続しようとして、その接続に失敗します。
- クライアント接続URLを
https://proxy-nosql.example.com:8089
に変更できます。 - IPをSANである
subjectAltName=IP:10.0.0.9
として追加できます
接続が成功するかどうかをテストするための簡単なコマンド:
簡単なcurl
コマンドを使用して接続をシミュレートし構成を検証できます。
$ openssl x509 -text -noout -in certificate.pem | grep CN
Issuer: C=US, ST=CA, L=San,CN=proxy-nosql/emailAddress=localhost@oraclevcn.com
Subject: C=US, ST=CA, L=San, CN=proxy-nosql/emailAddress=localhost@oraclevcn.com
$ curl --cacert certificate.pem https://node1-nosql.example.com:8087
curl: (51) Unable to communicate securely with peer: requested domain name does
not match the server's certificate.
理由: このURL内のアドレスnode1-nosql.example.comが証明書内のCN=proxy-nosqlと一致していません。また、SANもありません。
$ curl --cacert certificate.pem https://proxy-nosql:8087
理由: このURL内のアドレスが証明書内のCN=proxynosqlと一致しています。
$ openssl x509 -text -noout -in
certificate.pem | grep CN
Issuer: CN=*.example.com
Subject: CN=*.example.com
$ openssl x509 -text -noout -in certificate.pem | grep -e DNS -e IP
DNS:proxy-nosql, DNS:*.subdomain.example.com, IP Address:10.0.0.9
$ curl --cacert certificate.pem https://proxy-nosql.subdomain.example.com:8087
subjectAltName=DNS:*.subdomain.example.com
と一致しています。$ curl --cacert certificate.pem https://proxy-nosql:8087
理由: このURL内のアドレスproxy-nosqlが証明書内のCN=*.example.comと一致していなくても、証明書内のSANであるsubjectAltName=DNS:proxy-nosql
と一致しています。