web-dev-qa-db-ja.com

デスクトップアプリをSSLで保護する

http://XXX.XXX.XX.XX:5984のデータベースと同期するデスクトップアプリがあります。利用可能なすべてのサーバー側セキュリティを有効にしました。また、SSL https://XXX.XXX.XX.XX:6984を介して同期するようにデスクトップアプリを設定して、ユーザーがラップトップにアプリを持っていて、パブリック接続を使用して同期している場合に、データは暗号化されています。

サーバー上で自己署名証明書を使用してセットアップし、コマンドラインで次のようにテストしましたが、この通知が表示されます。

curl https://XXX.XX.XX.XXX:6984

More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

私はサーバーの所有者であり、ポートへの直接IPであるため。証明書の検証(curl -k https://XXX.XX.XX.XXX:6984)をオフにすると、データが暗号化されずに送信されますか?

1
jtlindsey

検証をオフにしても、データが暗号化されずに送信されるわけではありません。データは引き続きHTTPS(SSL/TLS接続)を介して送信されますが、サーバーからの証明書の有効性は、証明書を発行した認証局によって検証されません。

あなたの場合、あなたは自分で証明書に署名したので、あなたは確かに検証チェックを無効にするべきです。認証局によって証明書が発行されていないため、認証局によって証明書を検証/検証することはできません。エルゴ、検証チェックを無効にする必要があります。データは引き続き暗号化されて送信されますが、巧妙なMiTM攻撃者がクライアントが使用する偽の証明書を導入する可能性があるため、これにはもちろんセキュリティ上の懸念があります。そのため、CAから発行された証明書を取得することをお勧めしますが、自己署名チケットを使い続けたい場合は、検証チェックを無効にしてください。

1
Spencer D