
블루호스트 VPSCentOS 실행, 그러나 cat /etc/redhat-release
공개합니다 CloudLinux release 6.10 (Final)
.
내 로컬 PC(Win11/IIS/PHP)에서 Twilio API에 대해 컬 명령을 실행하면 제대로 작동합니다. 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
는 이 번들에 포함되어야 합니다.아파치를 다시 시작하십시오.
그 어느 것도 차이를 가져오지 않았으며 잘못된 인증서가 여전히 표시됩니다.
나는 그들에게 "어떤 인증서를 사용해야 할지 OS가 어떻게 알 수 있나요?"라고 물었습니다. 그러나 그들은 응답하지 않았습니다. 지정되지 않은 것 같습니다.
-k
Twilio API에 대해 컬 명령(어떤 일이 일어날지 확인하기 위해 안전하지 않은 명령을 사용함)을 실행했는데 다음 오류가 발생했습니다.
인증 헤더에는 'Credential' 매개변수가 필요합니다. 인증 헤더에는 '서명' 매개변수가 필요합니다. 인증 헤더에는 'SignedHeaders' 매개변수가 필요합니다. 승인 헤더에는 'X-Amz-Date' 또는 'Date' 헤더가 있어야 합니다. 인증=기본 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<<- opcode: QUERY, 상태: NOERROR, id: 58818 ;; 플래그: qr rd ra; 질의: 1, 답변: 9, 권한: 0, 추가: 0
;; 질문 섹션: ;api.twilio.com. 안에
;; 답변 섹션: 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. 자가 치유.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 34.232.251.189에;; 쿼리 시간: 10msec ;; 서버: 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<<- opcode: QUERY, 상태: NOERROR, id: 58143 ;; 플래그: qr rd ra; 질의: 1, 답변: 9, 권한: 0, 추가: 0
;; 질문 섹션: ;api.twilio.com. 안에
;; 답변 섹션: 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. 자가 치유.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;; 쿼리 시간: 23msec ;; 서버: 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 CApath: 없음
- SSL: 인증서 주체 이름 '*.glympse.com'이 대상 호스트 이름 'api.twilio.com'과 일치하지 않습니다.
- NSS 오류 -12276
- 연결 #0 종료 중 컬: (51) SSL: 인증서 주체 이름 '*.glympse.com'이 대상 호스트 이름 'api.twilio.com'과 일치하지 않습니다.
또한 Turdie의 제안에 따라 NOV-4에서 다음을 시도했습니다.
openssl s_client -connect api.twilio.com
결과:
포트가 정의되지 않았습니다
(그 후 문서와 같이 사용 가능한 인수가 엄청나게 많이 나옵니다. 원하는지 확실하지 않습니다.)
저는 개발자이지만 Linux 및 인증서에 대한 초보자이므로 누군가가 나를 도울 수 있기를 바랍니다. 미리 감사드립니다.
답변1
내 연구에 따르면 이것은 컬의 문제입니다.
당신은 사용해야합니다
curl -v --tlsv1.2
TS에서 겪고 있는 문제와 비슷한 문제인 것 같습니다.
https://blog.michaelfmcnamara.com/2015/12/curl-and-ssl-tls-issues/
컬에서 certpath: sql:/etc/pki/nssdb를 사용하여 glympse.com NSS로 인증서를 보내는 것 같습니다. twilio.com과 glympse는 이름이 다르기 때문에 불일치가 발생합니다. API에 연결하려면 어떤 인증서를 사용해야 하는지 twilio.com에서 확인해야 할 것 같습니다. 또한 귀하는 nssdb와 SQL 데이터베이스를 사용하고 있는 것 같습니다. 저는 이에 대해 전혀 모릅니다.
컬의 마지막 줄은 인증서 불일치를 명확하게 나타냅니다.
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****