자체 서명 된 SSL 인증서를 생성 한 후 원격 MySQL 서버에서이를 사용하도록 구성했습니다 (그리고 SSL이 활성화 됨)
원격 서버에 ssh하고 SSL을 사용하여 자체 mysqld에 연결을 시도하십시오 (MySQL 서버는 5.5.25입니다).
mysql -u <user> -p --ssl=1 --ssl-cert=client.cert --ssl-key=client.key --ssl-ca=ca.cert
Enter password:
ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1)
좋아, SSL을 통해 동일한 서버에 연결하는 데 문제가 있다는 것을 기억합니다. 따라서 클라이언트 키를 로컬 상자로 다운로드하고 테스트합니다.
mysql -h <server> -u <user> -p --ssl=1 --ssl-cert=client.cert --ssl-key=client.key --ssl-ca=ca.cert
Enter password:
ERROR 2026 (HY000): SSL connection error
이 "SSL 연결 오류"오류가 무엇을 의미하는지 불분명하지만를 생략하면 -ssl-ca
SSL을 사용하여 연결할 수 있습니다.
mysql -h <server> -u <user> -p --ssl=1 --ssl-cert=client.cert --ssl-key=client.key
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 37
Server version: 5.5.25 MySQL Community Server (GPL)
그러나 나는 이것이 연결을 암호화하고 실제로 인증서의 유효성을 확인하는 것이 아니라고 생각합니다 (중간자 공격에 잠재적으로 취약 할 수 있음)
SSL 인증서는 유효하지만 (자체 서명 되었음) 암호 문구가 없습니다. 그래서 내 질문은, 내가 뭘 잘못하고 있니? 자체 서명 된 인증서를 사용하여 SSL을 통해 연결하려면 어떻게해야합니까?
MySQL 서버 버전은 5.5.25이고 서버와 클라이언트는 CentOS 5입니다.
조언을 주셔서 감사합니다
편집 : 모든 경우에, 명령은 ssl 키가있는 동일한 디렉토리에서 실행되므로 절대 경로는 없습니다.
편집 (mgorven에 대한 응답으로) :
ca.cert
인증 기관 인증서입니다. 이는 인증 기관이 신뢰할 수 있음을 mysql에 알려줍니다.
구성 my.cnf
은
[mysqld]
ssl-ca=/etc/ssl/mysql/ca.cert
ssl-cert=/etc/ssl/mysql/server.cert
ssl-key=/etc/ssl/mysql/server.key
나는 또한 추가를 시도 ssl-cipher=DHE-RSA-AES256-SHA
했지만 도움이되지 않아 제거했습니다.
ca.cert
? 서버의 자체 서명 인증서입니까? 인증을 위해 클라이언트 인증서를 사용하고 있습니까? 서버에서 SSL 관련 구성을 제공하십시오.