2017-12-08 13 views
1

AWS VPC에서 실행중인 MySQL Docker 서비스에 대한 SSL 암호화 연결을 설정하려고합니다 (Docker for AWS 클라우드 형성 템플릿으로 설정). 탄력적 인로드 밸런서는 포트 3306을 리디렉션하도록 구성됩니다. SSL이 켜져 있지 않은 한 컨테이너에 연결하는 데 문제가 없습니다 (예 : MySQLWorkbench, mysql-client, .. 사용). AWS의 자체 인증서 (ACM) 또는 내 사용자 정의 인증서를 ELB Listener에 전달). SSL이 사용 가능한 경우, 클라이언트는 적절한 오류를 리턴하지 않고 중단/정지를 시작합니다. ACM에서 ca-certs를 추가하고 내 인증서를 만들었지 만 (클라이언트의 additonal 키/인증서없이) 아무 것도 내 문제를 해결하지 못하는 것 같습니다.AWS 탄력적 인로드 밸런서를 통해 MySQL 컨테이너에 대한 SSL 암호화 연결이 불가능합니다.

이제 저는이 설정이 그렇게 평범하지 않다는 사실을 잘 알고 있습니다. 나는 이것을하기위한 표준 방법이 MySQL 서버 자체를 구성하는 것이라고 생각한다. AFAIK,이 경우 클라이언트와 ELB 사이의 연결 만 암호화되어 있지만 이것이 왜 문제를 일으키는 지 이해할 수 없습니까?

답변에 감사드립니다.

+0

MySQL은 단순히로드 균형 조정기 유형에서 실행되도록 설계되지 않았습니다. 로드 밸런싱 된 MySQL을 원한다면 AWS Aurora를 살펴 봐야합니다. –

답변

1

MySQL의 클라이언트/서버 프로토콜에서 서버가 먼저 대화합니다. SSL (Secure Socket Layer) 지원 여부를 포함하여 기능을 알립니다. 그런 다음 클라이언트는 연결이 SSL 모드로 전환하도록 요청합니다. 그래야만 SSL 협상이 진행됩니다.

이런 이유로 MySQL 앞에서 SSL을 오프로드 할 수 없습니다.

MySQL 클라이언트/서버 프로토콜과 달리 클라이언트가 SSL 표준을 먼저 사용하기 때문에 클라이언트가 SSL을 협상하기 시작할 때까지 기다리는 동안 클라이언트가 서버의 초기 패킷을 기다리고 있기 때문에 연결이 끊깁니다. 협상.

이 기능을 사용하려면 ELB가 아니라 MySQL 서버에 인증서가 있어야합니다.

AWS 네트워크로드 밸런서는 MySQL을 노출하기에 더 적합한 솔루션이지만 여전히 MySQL 서버 자체에서 SSL 인증서가 필요합니다.

+0

감사합니다. @Michael -sqlbot & Marc B를 anwers에게 보내 주셨습니다. 마침내 포트를 리디렉션하고 MySQL 서버 자체에서 구성을 수행하는 일반적인 방법을 사용했습니다. – philologos