Loading...
MySQL 9.5 Reference Manual 9.5의 8.3 Using Encrypted Connections의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
8.3.1 Configuring MySQL to Use Encrypted Connections 8.3.2 Encrypted Connection TLS Protocols and Ciphers 8.3.3 Creating SSL and RSA Certificates and Keys 8.3.4 Connecting to MySQL Remotely from Windows with SSH 8.3.5 Reusing SSL Sessions
MySQL client와 server 사이의 연결이 암호화되어 있지 않으면, network에 접근 권한이 있는 사람이 모든 트래픽을 관찰하고 client와 server 사이에서 송수신되는 데이터를 검사할 수 있습니다.
보안을 유지해야 하는 정보를 network를 통해 전송해야 하는 경우, 암호화되지 않은 연결은 받아들일 수 없습니다. 어떤 종류의 데이터라도 읽을 수 없게 만들려면 암호화를 사용해야 합니다. 암호화 알고리즘에는 암호화된 메시지의 순서를 변경하거나 데이터를 두 번 재전송(replay)하는 것과 같은 알려진 다양한 공격에 저항하기 위한 보안 요소가 포함되어야 합니다.
MySQL은 TLS (Transport Layer Security) 프로토콜을 사용하여 client와 server 사이의 암호화된 연결을 지원합니다. TLS는 때때로 SSL (Secure Sockets Layer)로 불리지만, MySQL은 실제로 암호화된 연결에 SSL 프로토콜을 사용하지 않습니다. 그 암호화가 약하기 때문입니다(참고: Section 8.3.2, “Encrypted Connection TLS Protocols and Ciphers”).
TLS는 암호화 알고리즘을 사용하여 public network를 통해 수신된 데이터를 신뢰할 수 있도록 합니다. TLS에는 데이터 변경, 손실 또는 재전송을 탐지하는 메커니즘이 있습니다. TLS는 또한 X.509 표준을 사용하여 신원 확인을 제공하는 알고리즘을 포함합니다.
X.509는 Internet에서 누군가를 식별할 수 있게 해 줍니다. 기본적으로, “Certificate Authority”(또는 CA)라고 불리는 엔터티가 필요로 하는 누구에게든지 전자 인증서를 부여해야 합니다. Certificate는 두 개의 암호화 키(public key와 secret key)를 갖는 비대칭 암호화 알고리즘에 의존합니다. Certificate 소유자는 다른 상대방에게 자신의 신원을 증명하기 위해 certificate를 제시할 수 있습니다. Certificate는 소유자의 public key로 구성됩니다. 이 public key를 사용하여 암호화된 모든 데이터는 해당 certificate 소유자가 보유한 대응되는 secret key를 사용해서만 복호화할 수 있습니다.
MySQL에서 암호화된 연결에 대한 지원은 OpenSSL을 사용하여 제공됩니다. OpenSSL이 지원하는 암호화 프로토콜과 암호에 대한 정보는 Section 8.3.2, “Encrypted Connection TLS Protocols and Ciphers”를 참고하십시오.
기본적으로 MySQL 인스턴스는 런타임 시점에 사용 가능한 설치된
OpenSSL 라이브러리에 링크하여 암호화된 연결 및 기타
암호화 관련 작업을 지원합니다. 소스에서 MySQL을
컴파일할 때 WITH_SSL CMake 옵션을 사용하여 특정 설치된
OpenSSL 버전 또는 대체 OpenSSL 시스템 패키지의 경로를 지정할 수
있습니다. 이 경우 MySQL은 해당 버전을 선택합니다. 이 작업을 수행하는
방법에 대한 지침은
Section 2.8.6, “Configuring SSL Library Support”를
참고하십시오.
런타임 시점에 사용 중인 OpenSSL 라이브러리의 버전은
Tls_library_version 시스템 상태
변수를 사용하여 확인할 수 있습니다.
특정 버전의 OpenSSL로 MySQL을 컴파일했지만, 다시 컴파일하지 않고
다른 버전으로 변경하려는 경우, 동적 라이브러리 로더 경로
(Unix 시스템에서는 LD_LIBRARY_PATH, Windows 시스템에서는
PATH)를 편집하여 이를 수행할 수 있습니다. 컴파일 시 사용된
OpenSSL 버전의 경로를 제거하고, 교체할 버전의 경로를 추가하여
다른 OpenSSL 라이브러리 경로보다 앞에 오도록 배치하십시오. 시작 시점에,
MySQL이 경로에서 WITH_SSL로 지정된 OpenSSL 버전을 찾지 못하면,
대신 경로에 지정된 첫 번째 버전을 사용합니다.
기본적으로, server가 암호화된 연결을 지원하는 경우 MySQL 프로그램은 암호화를 사용하여 연결을 시도하고, 암호화된 연결을 설정할 수 없으면 암호화되지 않은 연결로 폴백합니다. 암호화된 연결 사용에 영향을 미치는 옵션에 대한 정보는 Section 8.3.1, “Configuring MySQL to Use Encrypted Connections”과 Command Options for Encrypted Connections를 참고하십시오.
MySQL은 연결 단위로 암호화를 수행하며, 특정 user에 대해
암호화 사용을 선택 사항(optional) 또는 필수(mandatory)로 설정할 수 있습니다. 이를
통해 개별 애플리케이션의 요구 사항에 따라 암호화된 또는 암호화되지 않은
연결을 선택할 수 있습니다. User에게 암호화된 연결 사용을
강제하는 방법에 대한 정보는
Section 15.7.1.3, “CREATE USER Statement”에 있는
CREATE USER statement의 REQUIRE 절 설명을
참고하십시오. 또한
Section 7.1.8, “Server System Variables”의
require_secure_transport 시스템
변수 설명도 참고하십시오.
암호화된 연결은 source server와 replica server 사이에서 사용될 수 있습니다. 자세한 내용은 Section 19.3.1, “Setting Up Replication to Use Encrypted Connections”을 참고하십시오.
MySQL C API에서 암호화된 연결을 사용하는 방법에 대한 정보는 Support for Encrypted Connections를 참고하십시오.
또한 SSH 연결 내에서 MySQL server host에 암호화를 사용하여 연결하는 것도 가능합니다. 예시는 Section 8.3.4, “Connecting to MySQL Remotely from Windows with SSH”를 참고하십시오.
8.2.23 SQL-Based Account Activity Auditing
8.3.1 Configuring MySQL to Use Encrypted Connections