이 문서는 WhatsApp Business API 클라이언트와 관련하여 비밀번호, 인증, SSL 구성, 네트워크 분리, 암호화된 통신, HTTP 헤더, 웹 서버 TLS 프로토콜에 대한 정보를 제공합니다.
인증 토큰과 비밀번호 모범 사례에 대한 자세한 내용은 로그인 및 인증 문서를 참조하세요.
WhatsApp Business API 클라이언트에 액세스하려면 HTTPS가 필요합니다.
WhatsApp Business API 클라이언트를 만들 때 기본적으로 자체 서명된 인증서가 생성됩니다. WhatsApp Business API 클라이언트 엔드포인트를 인증하고 인증서 신뢰 경고를 피하기 위해서는 자체 서명된 인증서를 생성하는 데 사용하는 인증 기관(CA) 인증서가 필요할 수 있습니다. 또는 자체 서명된 인증서 대신 CA 인증서를 업로드할 수도 있습니다. 자세한 내용은 CA 인증서 문서를 참조하세요.
또한 Webhooks는 콜백에 HTTPS를 요구하므로 자체 CA 인증서를 사용하여 앱이 구성된 Webhooks로 POST
요청을 보낼 때 SSL 오류가 발생하지 않게 할 수 있습니다. 자세한 내용은 Webhooks CA 인증서 문서를 참조하세요.
별도의 분리된 네트워크에서 Webapp과 Coreapp 노드를 호스팅하고 필요한 서비스에만 노출하는 것이 좋습니다.
Webapp 노드는 WhatsApp Business API 클라이언트와 관리 인력 워크스테이션이 호스팅되는 네트워크에만 API 및 웹 관리 엔드포인트를 노출해야 합니다.
Coreapp 노드는 통신 서비스를 Webapp 노드에만 노출해야 하고 다중 연결 설정에서는 제어 서비스를 다른 Coreapp 노드에만 노출해야 합니다.
Coreapp과 Webapp 컨테이너에서 WA_SECRET
환경 변수를 설정하여 둘 사이의 통신이 암호화되도록 하는 것이 좋습니다.
참고: Coreapp 및 Webapp 호스트는 암호화가 적절히 작동하도록 하려면 시계를 동기화해야 합니다. 시차가 있을 시 리플레이 보호(즉, 10초의 허용 시간을 두고 타임스탬프 체크)로 인해 통신이 실패할 수 있습니다.
데이터베이스 연결을 암호화하는 데 사용하는 SSL 매개변수를 구성하여 전송 중인 데이터를 보호할 수 있습니다.
이전에는 Coreapp과 데이터베이스 사이의 연결만 WA_DB_CONNECTION_OPTION
환경 변수를 사용하여 암호화할 수 있었습니다. 기존에는 Coreapp만 데이터베이스에 액세스할 권한이 있었기 때문입니다. 그러나 Webapp 컨테이너도 데이터베이스에 액세스하므로 Webapp과 데이터베이스 사이의 연결을 암호화하는 것이 중요합니다. 이를 위해서는 액세스할 모든 컨테이너에 대해 중립이 되도록 SSL 구성을 변경합니다. 암호화는 다음의 환경 변수를 사용하여 구성할 수 있습니다.
WA_DB_SSL_KEY
WA_DB_SSL_CERT
WA_DB_SSL_CA
WA_DB_SSL_VERIFY
WA_DB_SSL_VERIFY
는 서버 자격 증명을 인증하도록 구성될 수 있습니다. 이는 특정 내부 개발 설정에 필수이며 인증을 비활성화하지 않는 것이 좋습니다. 이 매개변수를 설정하지 않을 경우 기본적으로 인증이 활성화됩니다. 인증을 비활성화하려면 다음을 사용하세요.
WA_DB_SSL_VERIFY=0
참고:WA_DB_SSL_VERIFY
는 Webapp에만 적용 가능합니다.
이전 버전 호환성을 위해 WA_DB_CONNECTION_OPTION
이 사용 중단된 모드에서 계속 지원되며 Coreapp과 데이터베이스 간 연결을 암호화하는 데 사용됩니다. 이러한 새로운 매개변수로 전환하는 것이 좋습니다.
Key, Cert 및 CA 환경 변수에서 구성된 모든 파일은 컨테이너 내부에서 액세스 가능해야 합니다. 이를 위해서 적절한 권한이 있는 데이터 볼륨 아래에 certs
디렉터리를 생성할 수 있습니다. 일반적으로 데이터 볼륨은 /usr/local/waent/data
로 마운트되고, 그러면 컨테이너 내부의 /usr/local/waent/data/certs
에서 인증서 디렉터리에 액세스할 수 있습니다.
TLS 프로토콜과 암호는 Mozilla 권장 구성에 따라 구성되었습니다. Webapp은 3가지 프로필인 MODERN(기본값), INTERMEDIATE 및 OLD를 지원합니다.
보안을 개선하기 위해 기본 구성을 유지하는 것이 좋습니다. 그러나 WA_WEB_SECURITY_LEVEL
환경 변수를 사용해서 프로필을 다운그레이드할 수 있습니다.
다음의 HTTP 헤더는 웹 관리자에 대해서는 지원되지만 API 엔드포인트에 대해서는 지원되지 않고 사용 중인 브라우저의 영향을 받습니다.
이름 | 설명 |
---|---|
| 동일한 도메인의 스크립트만 웹 관리자에서 실행되도록 하는 정책을 정의합니다. |
| 헤더는 어떤 도메인도 웹 관리자 페이지를 iframe으로 포함하지 못하게 합니다. |
| 공격이 감지될 경우 입력을 정화하여 웹 관리자 페이지를 사이트 간 스크립팅 공격으로부터 보호하는 보호 헤더입니다. |
| 서버가 수신한 콘텐츠 유형이 서버에서 요청한 것과 동일한지 확인합니다. |
| HTTPS를 통해서만 웹 관리자에 액세스할 수 있도록 합니다. |