スポンサーリンク
最近ブログにSNSシェアボタンを設置したのですが、その時にFacebookDeveloperにアプリとして登録を行いました。
アプリ登録自体はすぐにできたのですが、公開する時に少しうまくいかなかったことがあり、結果としてSSLの設定に問題があることがわかったので原因と対処法をメモしておきたいと思います。
FacebookDeveloperのアプリを「公開」ステータスに変更する時に、プライバシーポリシーのURLを設定する必要があるのですが、設定しようとすると
Facebookプラットフォームに準拠するものにするには、有効なプライバシーポリシーURLを入力してください。リクエストエラー: SSL Error: Can't validate SSL Certificate. Either it is self-signed (which will cause browser warnings) or it is invalid.
というエラーが出てしまいました。(画像参照)
私はLet's Encryptの証明書を使ってはいますが、オレオレ証明書(self-signed)ではない正当な証明書なはずなので、何が悪いのか?と思いググってみました。
結果として、SSLの証明書自体ではなく、httpsの設定が良くないことがわかりました。
SSLの設定が正しいかを調査してくれるWebページがあり、ここでのスコアがA以上でないとFacebookには登録できないという情報を見つけました。
実際に自分のWebアプリを調査してみると、Bという判定が出ており、いろいろな問題点があることがわかりました。
この結果を読むと、まずい点は3点あり、それぞれ修正しました。
(まずい点↓)
これは、Logjamという脆弱性に対しての対策がされていないこと
を表すエラーメッセージでした。
以下の手順で修正しました。nginx.confの修正です。
# ↓ご自身の環境によってファイルは変わります
vim /etc/nginx/nginx.conf
以下のように修正します。
http {
~~~ 中略 ~~
server {
listen 443 ssl;
server_name www.setouchino.cloud;
ssl_certificate /etc/letsencrypt/live/www.setouchino.cloud/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/www.setouchino.cloud/privkey.pem;
### 追記ここから↓ ###
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
ssl_dhparam /etc/nginx/dhparams.pem;
### 追記ここまで↑ ###
}
そして、以下コマンドを実行します
openssl dhparam -out /etc/nginx/dhparams.pem 2048
ここまでできたら、nginxを再起動します。
systemctl restart nginx.service
これで一つ目の対処は完了です。
よくわからないですが、このへんのページを見ることで解決できました。
# ↓ご自身の環境によってファイルは変わります
vim /etc/nginx/nginx.conf
以下のように修正します。
http {
~~~ 中略 ~~
server {
listen 443 ssl;
server_name www.setouchino.cloud;
ssl_certificate /etc/letsencrypt/live/www.setouchino.cloud/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/www.setouchino.cloud/privkey.pem;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
ssl_dhparam /etc/nginx/dhparams.pem;
### 追記ここから↓ ###
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_prefer_server_ciphers on;
### 追記ここまで↑ ###
}
そしてnginxを再起動します。
systemctl restart nginx.service
これで2つ目の対処は完了です。
これはどちらかというと設定ミスの類なのですが、SSLの証明書を間違って指定していました。
# ↓しつこいですが、ご自身の環境によってファイルは変わります
vim /etc/nginx/nginx.conf
以下の部分が間違ってました。
http {
~~~ 中略 ~~
server {
listen 443 ssl;
server_name www.setouchino.cloud;
# ↓★★間違い
ssl_certificate /etc/letsencrypt/live/www.setouchino.cloud/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/www.setouchino.cloud/privkey.pem;
}
正しくは、以下の通りです。
http {
~~~ 中略 ~~
server {
listen 443 ssl;
server_name www.setouchino.cloud;
# ↓★★正しい
ssl_certificate /etc/letsencrypt/live/www.setouchino.cloud/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.setouchino.cloud/privkey.pem;
}
fullchain.pem
と言うのは証明書と中間証明書を連結したファイルで、これを設定するのが正しいようでした。
無事A判定となり、Facebookのアプリも無事公開にすることができました。
SSLのことは正直あまりわかっていなかったので、良い勉強になりました。IT技術は奥が深いですね。。
https://easyengine.io/tutorials/nginx/diffie-hellman-logjam-attack-fix/
【解決】Facebookのシェアでエラーが出てたと思ったらSSLの不具合だった話
nginx の SSL設定をしくって Facebook アプリ登録でエラーとなった件
ApacheとNginxでのForward Secrecy設定方法
スポンサーリンク
2020/12/08 14:27:08
Propecia Dosage Or 1 Mg usacybes buy cialis online reviews glicky Viagra 100mg Pfizer