
ブルーホストVPSCentOSを実行が、cat /etc/redhat-release
明らかにしますCloudLinux release 6.10 (Final)
。
ローカル PC (Win11/IIS/PHP) 上の Twilio API に対して curl コマンドを実行すると、正常に動作します。Bluehost サーバー (詳細出力を有効にした状態) で同じことを実行しようとすると、次のメッセージが表示されて失敗します。
証明書のサブジェクト名 '*.us-east-1.es.amazonaws.com' がターゲット ホスト名 'api.twilio.com' と一致しません
* About to connect() to api.twilio.com port 443 (#0)
* Trying 50.19.189.95... connected
* Connected to api.twilio.com (50.19.189.95) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSL: certificate subject name '*.us-east-1.es.amazonaws.com' does not match target host name 'api.twilio.com'
* NSS error -12276
* Closing connection #0
curl: (51) SSL: certificate subject name '*.us-east-1.es.amazonaws.com' does not match target host name 'api.twilio.com'
Twilio サポートから、Chrome 経由で SSL 証明書をダウンロードするように指示されたので、その通りにしました。証明書に「cacert.pem」という名前を付けました。これが必要な名前だとは思っていたのですが、わかりません。bash ターミナルで実行するように指示された手順は次のとおりです。
cacert.pem ファイルをアップロードします。まず、cacert.pem ファイルを CentOS VPS にアップロードします。これには、SCP や SFTP などの安全なファイル転送方法を使用できます。
証明書ストアの場所を決定する: 証明書ストアの場所は、使用するアプリケーションによって異なる場合があります。システム全体の信頼のために、通常は証明書を /etc/pki/tls/certs/ に配置できます。
証明書ファイルをコピーします: cacert.pem ファイルを証明書ストアにコピーします:
sudo cp cacert.pem /etc/pki/tls/certs/
CA 証明書バンドルを更新する: CA 証明書バンドルを更新するには、次のコマンドを実行します。
sudo update-ca-trust enable
CA 信頼を更新します。update-ca-trust extract コマンドを使用して CA 信頼を更新します。
sudo update-ca-trust extract
証明書のインストールを確認します。CA バンドルを確認することで、証明書が正常にインストールされたことを確認できます。 このバンドルに
cat /etc/pki/tls/certs/ca-bundle.crt
コンテンツcacert.pem
が含まれている必要があります。Apache を再起動します。
どれも効果がなく、間違った証明書が依然として提示されています。
「OS はどの証明書を使用するかをどのように認識するのですか?」と尋ねましたが、回答はありませんでした。そのことは一度も指定されていなかったようです。
Twilio API に対してcurl コマンドを実行したところ (-k
何が起こるかを確認するために insecure を使用していることに注意してください)、次のエラーが発生しました。
認証ヘッダーには「Credential」パラメータが必要です。認証ヘッダーには「Signature」パラメータが必要です。認証ヘッダーには「SignedHeaders」パラメータが必要です。認証ヘッダーには「X-Amz-Date」または「Date」ヘッダーのいずれかが必要です。Authorization=Basic QUNmN***
dig
Bluehost サーバーで次の 2 つの診断を実行しました。
dig api.twilio.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.8 <<>> api.twilio.com ;; グローバル オプション: +cmd ;; 回答を取得しました: ;; ->>HEADER<<- オペコード: QUERY、ステータス: NOERROR、ID: 58818 ;; フラグ: qr rd ra; クエリ: 1、回答: 9、権限: 0、追加: 0
;; 質問セクション: ;api.twilio.com. IN A
;; 回答セクション: api.twilio.com. 20 IN CNAME
virginia.us1.api-lb.twilio.com. virginia.us1.api-lb.twilio.com. 20 IN CNAME self-healing.api-alb.us1.api-lb.twilio.com. self-healing.api-alb.us1.api-lb.twilio.com. 20 IN CNAME ien-alb-bapi-b-156106065.us-east-1.elb.amazonaws.com. ien-alb-bapi-b-156106065.us-east-1.elb.amazonaws.com. 20 IN A 34.204.146.75 ien-alb-bapi-b-156106065.us-east-1.elb.amazonaws.com. 20 IN A 52.20.98.48 ien-alb-bapi-b-156106065.us-east-1.elb.amazonaws.com. 20 IN A 35.153.214.247 ien-alb-bapi-b-156106065.us-east-1.elb.amazonaws.com. 20 IN A 54.208.14.118 ien-alb-bapi-b-156106065.us-east-1.elb.amazonaws.com. 20 IN A 54.242.5.138 ien-alb-bapi-b-156106065.us-east-1.elb.amazonaws.com. 20 IN A 34.232.251.189;; クエリ時間: 10 ミリ秒 ;; サーバー: 1.1.1.1#53(1.1.1.1) ;; 日時: 2023 年 11 月 3 日金曜日 08:51:38 ;; 受信した MSG サイズ: 260
dig api.twilio.com @8.8.8.8
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.8 <<>> api.twilio.com @8.8.8.8 ;; グローバル オプション: +cmd ;; 回答を取得しました: ;; ->>HEADER<<- オペコード: QUERY、ステータス: NOERROR、ID: 58143 ;; フラグ: qr rd ra; クエリ: 1、回答: 9、権限: 0、追加: 0
;; 質問セクション: ;api.twilio.com. IN A
;; 回答セクション: api.twilio.com. 21 IN CNAME
virginia.us1.api-lb.twilio.com. virginia.us1.api-lb.twilio.com. 21 IN CNAME self-healing.api-alb.us1.api-lb.twilio.com. self-healing.api-alb.us1.api-lb.twilio.com. 21 IN CNAME ien-alb-bapi-a-1963256146.us-east-1.elb.amazonaws.com. ien-alb-bapi-a-1963256146.us-east-1.elb.amazonaws.com. 21 IN A 3.222.47.158 ien-alb-bapi-a-1963256146.us-east-1.elb.amazonaws.com. 21 IN A 34.236.63.82 ien-alb-bapi-a-1963256146.us-east-1.elb.amazonaws.com. 21 IN A 52.0.177.50 ien-alb-bapi-a-1963256146.us-east-1.elb.amazonaws.com. 21 IN A 34.232.27.126 ien-alb-bapi-a-1963256146.us-east-1.elb.amazonaws.com. 21 IN A 3.225.164.19 ien-alb-bapi-a-1963256146.us-east-1.elb.amazonaws.com. 21 IN A 52.206.184.52;; クエリ時間: 23 ミリ秒 ;; サーバー: 8.8.8.8#53(8.8.8.8) ;; 日時: 2023 年 11 月 3 日金曜日 08:52:11 ;; 受信した MSG サイズ: 261
Turdie の提案に基づいて、NOV-4 で次のことを試しました。
curl -v --tlsv1.2 -X POST "https://api.twilio.com/2010-04-01/Accounts/ACf7b58ec793***4d/Messages.json" \
> --data-urlencode "Body=This is the ship that made the Kessel Run in fourteen parsecs?" \
> --data-urlencode "From=+14*****40" \
> --data-urlencode "To=+18*****44" \
> -u ACf7b*****30a4d:0ce7445d*****48bc4d
結果:
- api.twilio.com ポート 443 (#0) に接続しようとしています
- 50.19.189.95 を試行中... タイムアウト
- 35.168.202.10 を試行中... タイムアウト
- 54.173.225.186 を試行中... タイムアウト
- 107.22.7.7 を試行中... タイムアウト
- 52.204.229.116 を試行中...接続されました
- api.twilio.com (52.204.229.116) ポート 443 (#0) に接続しました
- certpath を使用して NSS を初期化しています: sql:/etc/pki/nssdb
- CAファイル: /etc/pki/tls/certs/ca-bundle.crt CAパス: なし
- SSL: 証明書のサブジェクト名 '*.glympse.com' がターゲット ホスト名 'api.twilio.com' と一致しません
- NSS エラー -12276
- 接続 #0 を閉じています curl: (51) SSL: 証明書のサブジェクト名 '*.glympse.com' がターゲット ホスト名 'api.twilio.com' と一致しません
また、Turdie の提案に基づいて、NOV-4 で次のことを試しました。
openssl s_client -connect api.twilio.com
結果:
ポートが定義されていません
(その後、ドキュメントなどの利用可能な引数が大量に出力されました。それが必要なのかどうかはわかりません。)
私は開発者ですが、Linux と認定資格に関しては初心者なので、誰かが助けてくれることを願っています。よろしくお願いします。
答え1
私の調査によると、これは curl の問題です。
使用する必要がある
curl -v --tlsv1.2
これはTSが経験している問題と似ているようです
https://blog.michaelfmcnamara.com/2015/12/curl-and-ssl-tls-issues/
curl では、certpath: sql:/etc/pki/nssdb の glympse.com NSS で証明書を送信しているようです。twilio.com と glympse は名前が異なるため、不一致が発生します。API に接続するためにどの証明書を使用する必要があるかを twilio.com で確認する必要があると思います。また、nssdb と sql データベースを使用しているようですが、それについてはよくわかりません。
curlの最後の行には証明書の不一致が明確に記載されています
Closing connection #0 curl: (51) SSL: certificate subject name '*.glympse.com' does not match target host name 'api.twilio.com'
編集
APIキーはどこにありますか?ドキュメントを確認してください
curl -v --tlsv1.2 -X POST "https://api.twilio.com/2010-04-01/Accounts/ACf7b58ec793***4d/Messages.json" \
> --data-urlencode "Body=This is the ship that made the Kessel Run in fourteen parsecs?" \
> --data-urlencode "From=+14*****40" \
> --data-urlencode "To=+18*****44" \
> -u ACf7b*****30a4d:0ce7445d****