新しいスタートアップのために、Comodo.comからSSL証明書を取得しました。面倒なプロセスをすべて実行し、最終的にAWSサーバーに実装することができました(MEANスタックを実行しています)。誰かがFirefoxを使用して私のWebサイトにアクセスすると、次のエラーが発生します。
技術的な詳細
無効なセキュリティ証明書。
発行者チェーンが提供されていないため、証明書は信頼されていません。 (エラーコード:sec_error_unknown_issuer)
しかし、明らかに私はユーザーにその警告を受け取らせたくありません。
サーバーが通常のhttpでファイルを配信していて、https以外のコンテンツが見つからなかったのではないかと思ったので、その問題については問題ないと思います(おそらくそうではありません)。
SSL証明書を使用するのはこれが初めてであり、間違っている可能性があります。あなたが私を助けることができれば素晴らしいでしょう。ありがとう
これが画像です:
SSL証明書をインストールしましたが、信頼パスを構築するために必要な追加の証明書を含めませんでした。 https://www.ssllabs.com/ssltest/analyze.html?d=phrecordr.com を参照してください。
信頼パスについて、SSLクライアントにはいくつかのルート証明書が保存されています。一部のCAから証明書[〜#〜] c [〜#〜]を購入すると、中間証明書を使用する場合があります(これを[〜#〜] b [〜#〜])ルートCAによって署名されている[〜#〜] a [〜#〜]。証明書[〜#〜] c [〜#〜]のみをクライアントに提供すると、クライアントは信頼パスを確立できなくなります[〜#〜] a [〜#〜]から[〜#〜] c [〜#〜 ]。これを修正するには、証明書[〜#〜] b [〜#〜]を証明書[〜に追加します。 #〜] c [〜#〜]。
正確な詳細は、使用しているSSLサーバーによって異なります。詳細については、SSLサーバーのドキュメントを参照してください。
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/