컴퓨터 지식 네트워크 - 컴퓨터 백과사전 - MySQL 서버 및 클라이언트에 SSL을 활성화하는 방법

MySQL 서버 및 클라이언트에 SSL을 활성화하는 방법

사용자가 MySQL 서버와 보안 연결을 설정하려는 경우 VPN 터널이나 SSH 터널을 사용하는 경우가 많습니다. 그러나 MySQL 연결을 얻는 또 다른 방법은 MySQL 서버에서 SSL 래퍼를 활성화하는 것입니다. 이러한 각 방법에는 고유한 장점과 단점이 있습니다. 예를 들어, 여러 개의 단기 MySQL 연결이 있는 매우 동적인 환경에서는 각 연결을 설정하기 위해 값비싼 SSL 핸드셰이크 계산이 필요한 SSL보다 VPN 또는 SSH 터널이 더 나은 선택일 수 있습니다. 반면, MySQL 연결 수가 적은 장기 실행 애플리케이션의 경우 SSL 기반 암호화가 적합할 수 있습니다. MySQL 서버에는 이미 SSL 지원이 내장되어 있으므로 자체 유지 관리 오버헤드가 있는 VPN이나 ​​SSH 터널과 같은 별도의 보안 계층을 구현할 필요가 없습니다.

MySQL 서버에 SSL을 구현하면 서버와 클라이언트 사이에 주고받는 모든 데이터를 암호화할 수 있어 WAN이나 데이터 센터에서 도청이나 데이터 스니핑을 방지할 수 있습니다. 또한 SSL은 SSL 인증서를 통한 인증 메커니즘을 제공하므로 피싱 공격으로부터 사용자를 보호합니다.

이 기사에서는 MySQL 서버에서 SSL을 활성화하는 방법을 소개합니다. 참고: MariaDB 서버에도 동일한 프로세스가 적용됩니다.

서버 SSL 인증서 및 개인 키 생성

SSL을 통해 서버에 연결할 때 사용되는 MySQL 서버용 SSL 인증서와 개인 키를 생성해야 합니다.

먼저 개인 키와 인증서 파일을 저장할 임시 작업 디렉터리를 만듭니다.

$ sudo mkdir ~/cert $ cd ~/cert

MySQL 서버를 실행하는 시스템에 OpenSSL이 설치되어 있는지 확인하세요. 일반적으로 모든 Linux 배포판에는 기본적으로 OpenSSL이 설치되어 있습니다. OpenSSL이 설치되어 있는지 확인하려면 다음 명령을 사용하는 것이 좋습니다.

$ openssl 버전 OpenSSL 1.0.1f 2014년 1월 6일

이제 CA 개인 키와 인증서 생성을 진행하세요. 다음 명령은 ca-key.pem 및 ca-cert.pem을 생성합니다.

$ openssl genrsa 2048 > ca-key.pem $ openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem

두 번째 명령은 몇 가지 질문을 합니다. 이 필드에 무엇을 입력하는지는 중요하지 않습니다. 해당 필드를 작성하면 됩니다.

다음 단계는 서버의 개인 키를 만드는 것입니다.

$ openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout server-key.pem > server-req.pem

이 명령은 몇 가지 질문을 다시 묻습니다. 이전 단계에서 제공된 것과 동일한 답변을 입력할 수 있습니다.

다음으로, 다음 명령을 사용하여 서버의 개인 키를 RSA 유형 키로 내보냅니다.

$ openssl rsa -in server-key.pem -out server-key.pem

마지막으로 CA 인증서를 사용하여 서버 인증서를 생성합니다.

$ openssl x509 -sha1 -req -in server-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem

MySQL 서버에서 SSL 구성

위 프로세스를 완료하면 CA 인증서, 서버의 개인 키 및 인증서가 있어야 합니다. 다음 단계는 개인 키와 인증서를 사용하도록 MySQL 서버를 구성하는 것입니다.

MySQL 서버를 구성하기 전에 SSL 옵션이 활성화되어 있는지 비활성화되어 있는지 확인하세요. 이를 수행하려면 MySQL 서버에 로그인하고 다음 쿼리를 입력하십시오.

mysql> SHOW GLOBAL VARIABLES LIKE 'have_%ssl';,

이 쿼리의 결과는 아래와 같습니다.

참고: "have_openssl" 및 "have_ssl" 변수의 기본값은 아래와 같이 "disabled"입니다. MySQL 서버에서 SSL을 활성화하려면 다음 단계를 계속하십시오.

1. ca-cert.pem, server-cert.pem 및 server-key.pem을 /etc 디렉터리로 복사하거나 이동합니다.

$ sudo mkdir /etc/mysql-ssl $ sudo cp ca-cert.pem server-cert.pem server-key.pem /etc/mysql-ssl

2. 텍스트 편집 도구를 사용하여 서버의 my.cnf 구성 파일을 엽니다. 주석 [mysqld] 섹션에서 다음과 유사한 줄을 추가하거나 제거합니다. 이는 /etc/mysql-ssl에 배치한 개인 키와 인증서를 가리켜야 합니다.

[mysqld] ssl-ca=/etc/mysql-ssl/ca-cert.pem ssl-cert=/etc/mysql-ssl/server-cert.pem ssl-key=/etc/mysql -ssl/server-key.pem

3. my.cnf에서 "bind-address = 127.0.0.1"도 찾아 다음으로 변경합니다:

bind -address = *

이렇게 하면 다른 호스트에서 MySQL 서버에 연결할 수 있습니다.

4. MySQL 서비스를 다시 시작합니다.

$ sudo service mysql restart 또는 $ sudo systemctl restart mysql 또는 $ sudo /etc/init.d/mysql restart

MySQL 오류 로그 파일(예: /var/log /mysql/mysql.log) SSL 구성에 문제가 있는지 확인할 수 있습니다. 오류 로그에 경고나 오류가 없으면(아래 스크린샷과 같이) SSL 구성에 문제가 없음을 나타냅니다.

SSL 구성을 확인하는 또 다른 방법은 MySQL 서버에서 "have_%ssl" 쿼리를 다시 실행하는 것입니다.

mysql> SHOW GLOBAL VARIABLES LIKE 'have_%ssl';

SSL 권한이 있는 사용자 생성

서버 측 SSL 구성이 완료된 후 다음 단계는 SSL을 통해 MySQL 서버에 액세스할 수 있는 사용자를 생성하는 것입니다. 이를 수행하려면 MySQL 서버에 로그인하고 다음을 입력하십시오:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'ssluser'@'%' IDENTIFIED BY 'dingdong' REQUIRE SSL> FLUSH;

"ssluser"(사용자 이름) 및 "dingdong"(비밀번호)을 자신의 사용자 이름과 비밀번호로 바꾸십시오.

사용자가 해당 주소에서 서버에 액세스할 수 있도록 특정 IP 주소(예: 192.168.2.8)를 할당하려면 대신 다음 쿼리를 사용하세요.

mysql> 'ssluser'@'192.168.2.8'에 대한 모든 권한 부여 'dingdong'에 의해 식별됨 mysql> FLUSH PRIVILEGES;

MySQL 클라이언트 구성 SSL

MySQL 서버 측 구성이 완료되었으므로 클라이언트 측에 관심을 돌리는 것이 좋습니다. MySQL 클라이언트에 관한 한, 서버의 CA 개인 키와 인증서를 기반으로 새로운 개인 키와 인증서를 생성해야 합니다.

서버의 CA 개인 키와 인증서가 있는 MySQL 서버 호스트에서 다음 명령을 실행하세요.

$ openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout client-key.pem > client-req.pem

서버 측 구성과 유사합니다. 위 명령은 몇 가지 질문을 할 것입니다. 이전과 마찬가지로 필드를 채우면 됩니다.

또한 아래와 같이 생성된 클라이언트 개인 키를 RSA 유형으로 변환해야 합니다.

$ openssl rsa -in client-key.pem -out client-key.pem,

마지막으로 서버의 CA 개인 키와 인증서를 사용하여 클라이언트 인증서를 생성해야 합니다. .

$ openssl x509 -sha1 -req -in client-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem

이제 ca-cert.pem, client-cert.pem 및 client-key.pem 파일을 MySQL 클라이언트를 실행하려는 호스트로 이동하세요.

클라이언트 호스트에서 다음 명령을 사용하여 SSL을 통해 MySQL 서버에 연결합니다.

$ mysql --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -h -u ssluser -p

ssluser 비밀번호를 입력하면 일반적인 MySQL 프롬프트가 표시됩니다.

SSL을 사용하고 있는지 확인하려면 프롬프트에 status 명령을 입력하세요.

mysql> status;

SSL을 통해 연결한 경우 아래와 같이 SSL 필드에 비밀번호 정보가 표시됩니다.

上篇: 쓰촨 정보 센터 주소는 어디에 있습니까? 건물이야? 下篇: Tianzhihen 오류
관련 내용