web-dev-qa-db-ja.com

FirefoxがPositivesslのHTTPS「信頼できない」接続について警告するのはなぜですか-Comodo証明書?

新しいスタートアップのために、Comodo.comからSSL証明書を取得しました。面倒なプロセスをすべて実行し、最終的にAWSサーバーに実装することができました(MEANスタックを実行しています)。誰かがFirefoxを使用して私のWebサイトにアクセスすると、次のエラーが発生します。

技術的な詳細

無効なセキュリティ証明書。

発行者チェーンが提供されていないため、証明書は信頼されていません。 (エラーコード:sec_error_unknown_issuer)

しかし、明らかに私はユーザーにその警告を受け取らせたくありません。

サーバーが通常のhttpでファイルを配信していて、https以外のコンテンツが見つからなかったのではないかと思ったので、その問題については問題ないと思います(おそらくそうではありません)。

SSL証明書を使用するのはこれが初めてであり、間違っている可能性があります。あなたが私を助けることができれば素晴らしいでしょう。ありがとう

これが画像です:

enter image description here

http://www.evernote.com/shard/s111/sh/a4bd8f33-8dba-47ae-b6d9-d1793acb8c64/1682676a05ebebddb8ed14a112df9d94

2
lito

SSL証明書をインストールしましたが、信頼パスを構築するために必要な追加の証明書を含めませんでした。 https://www.ssllabs.com/ssltest/analyze.html?d=phrecordr.com を参照してください。

信頼パスについて、SSLクライアントにはいくつかのルート証明書が保存されています。一部のCAから証明書[〜#〜] c [〜#〜]を購入すると、中間証明書を使用する場合があります(これを[〜#〜] b [〜#〜])ルートCAによって署名されている[〜#〜] a [〜#〜]。証明書[〜#〜] c [〜#〜]のみをクライアントに提供すると、クライアントは信頼パスを確立できなくなります[〜#〜] a [〜#〜]から[〜#〜] c [〜#〜 ]。これを修正するには、証明書[〜#〜] b [〜#〜]を証明書[〜に追加します。 #〜] c [〜#〜]

正確な詳細は、使用しているSSLサーバーによって異なります。詳細については、SSLサーバーのドキュメントを参照してください。

1
Lekensteyn

2014年6月:

NodeJSおよびExpressJSの場合

これは私が使用した構成であり、数日間壁に頭をぶつけた後は正常に機能しました。 Express 3.4を使用しています(Express 4.0でも同じだと思います)

var privateKey  = fs.readFileSync('helpers/sslcert/key.pem', 'utf8');
var certificate = fs.readFileSync('helpers/sslcert/csr.pem', 'utf8');

files = ["COMODORSADomainValidationSecureServerCA.crt",
         "COMODORSAAddTrustCA.crt",
         "AddTrustExternalCARoot.crt"
        ];

ca = (function() {
  var _i, _len, _results;

  _results = [];
  for (_i = 0, _len = files.length; _i < _len; _i++) {
    file = files[_i];
    _results.Push(fs.readFileSync("helpers/sslcert/" + file));
  }
  return _results;
})();

var credentials = {ca:ca, key: privateKey, cert: certificate};

// process.env.PORT : Heroku Config environment
var port = process.env.PORT || 4000;

var app = express();
var server = http.createServer(app).listen(port, function() {
        console.log('Express HTTP server listening on port ' + server.address().port);
});
https.createServer(credentials, app).listen(3000, function() {
        console.log('Express HTTPS server listening on port ' + server.address().port);
});

// redirect all http requests to https
app.use(function(req, res, next) {
  if(!req.secure) {
    return res.redirect(['https://mydomain.com', req.url].join(''));
  }
  next();
});

次に、80ポートと443ポートをリダイレクトしました。

Sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 4000
Sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 3000

あなたが私の証明書をチェックした後に見ることができるように、私は4 [0,1,2,3]を持っています:

openssl s_client -connect mydomain.com:443 -showcerts | grep "^"

ubuntu@ip-172-31-5-134:~$ openssl s_client -connect mydomain.com:443 -showcerts | grep "^ "
depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
verify error:num=19:self signed certificate in certificate chain
verify return:0
 0 s:/OU=Domain Control Validated/OU=PositiveSSL/CN=mydomain.com
   i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
 1 s:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
   i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority
 2 s:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority
   i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
 3 s:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
   i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
    Protocol  : TLSv1.1
    Cipher    : AES256-SHA
    Session-ID: 8FDEAEE92ED20742.....3E7D80F93226142DD
    Session-ID-ctx:
    Master-Key: C9E4AB966E41A85EEB7....4D73C67088E1503C52A9353C8584E94
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - 7c c8 36 80 95 4d 4c 47-d8 e3 ca 2e 70 a5 8f ac   |.6..MLG....p...
    0010 - 90 bd 4a 26 ef f7 d6 bc-4a b3 dd 8f f6 13 53 e9   ..J&..........S.
    0020 - f7 49 c6 48 44 26 8d ab-a8 72 29 c8 15 73 f5 79   .I.HD&.......s.y
    0030 - ca 79 6a ed f6 b1 7f 8a-d2 68 0a 52 03 c5 84 32   .yj........R...2
    0040 - be c5 c8 12 d8 f4 36 fa-28 4f 0e 00 eb d1 04 ce   ........(.......
    0050 - a7 2b d2 73 df a1 8b 83-23 a6 f7 ef 6e 9e c4 4c   .+.s...........L
    0060 - 50 22 60 e8 93 cc d8 ee-42 22 56 a7 10 7b db 1e   P"`.....B.V..{..
    0070 - 0a ad 4a 91 a4 68 7a b0-9e 34 01 ec b8 7b b2 2f   ..J......4...{./
    0080 - e8 33 f5 a9 48 11 36 f8-69 a6 7a a6 22 52 b1 da   .3..H...i....R..
    0090 - 51 18 ed c4 d9 3d c4 cc-5b d7 ff 92 4e 91 02 9e   .....=......N...
    Start Time: 140...549
    Timeout   : 300 (sec)
    Verify return code: 19 (self signed certificate in certificate chain)

幸運を! PD:さらに回答が必要な場合は、次を確認してください: http://www.benjiegillam.com/2012/06/node-dot-js-ssl-certificate-chain/

0
lito