6.3.10.4 SSL 명령 옵션
이 섹션에서는 SSL을 사용할지 여부를 지정하는 옵션과 SSL 인증서 및 키 파일의 이름을 지정하는 옵션에 대해 설명합니다. 이 옵션은 명령 행 또는 옵션 파일에서 지정할 수 있습니다. MySQL이 SSL 지원을 사용하여 구축되어 있지 않으면 이들을 사용할 수 없습니다. 섹션 6.3.10.2 "SSL을 사용하는 MySQL의 구성" 을 참조하십시오. 권장 사용 예 및 연결이 보안인지 여부를 확인하는 방법은 섹션 6.3.10.3 "SSL 연결 사용" 을 참조하십시오.
표 6.16 SSL 옵션 / 변수의 요약
이름 | 명령 행 | 옵션 파일 | 시스템 변수 | 상태 변수 | 변수 범위 | 동적 |
---|---|---|---|---|---|---|
have_openssl | 예 | 글로벌 | 아니오 | |||
have_ssl | 예 | 글로벌 | 아니오 | |||
skip-ssl | 예 | 예 | ||||
ssl | 예 | 예 | ||||
ssl-ca | 예 | 예 | 글로벌 | 아니오 | ||
- 변수 : ssl_ca | 예 | 글로벌 | 아니오 | |||
ssl-capath | 예 | 예 | 글로벌 | 아니오 | ||
- 변수 : ssl_capath | 예 | 글로벌 | 아니오 | |||
ssl-cert | 예 | 예 | 글로벌 | 아니오 | ||
- 변수 : ssl_cert | 예 | 글로벌 | 아니오 | |||
ssl-cipher | 예 | 예 | 글로벌 | 아니오 | ||
- 변수 : ssl_cipher | 예 | 글로벌 | 아니오 | |||
ssl-crl | 예 | 예 | 글로벌 | 아니오 | ||
- 변수 : ssl_crl | 예 | 글로벌 | 아니오 | |||
ssl-crlpath | 예 | 예 | 글로벌 | 아니오 | ||
- 변수 : ssl_crlpath | 예 | 글로벌 | 아니오 | |||
ssl-key | 예 | 예 | 글로벌 | 아니오 | ||
- 변수 : ssl_key | 예 | 글로벌 | 아니오 |
--ssl
서버에 대해이 옵션을 지정하면 서버에서 SSL 연결이 허용되지만 필수는 안됩니다.
클라이언트 프로그램에 대해이 옵션을 지정하면 SSL을 사용하여 서버에 연결하는 클라이언트에 허용되지만 필수는 안됩니다. 따라서이 옵션만으로는 SSL 연결을 사용하는 데 충분하지 않습니다. 예를 들어,이 옵션을 클라이언트 프로그램을 지정하지만, 서버는 SSL 연결을 허용하도록 구성되어 있지 않으면 암호화되지 않은 연결이 사용됩니다.
SSL 연결을 사용하기 위해 권장되는 SSL 옵션 설정으로 서버 측에서 적어도
--ssl-cert
및--ssl-key
를 사용하여 클라이언트 측에서--ssl-ca
를 사용합니다. 섹션 6.3.10.3 "SSL 연결 사용" 을 참조하십시오.기타
--ssl-
옵션에 대한 설명에서 나타난 바와 같이 이러한 옵션은xxx
--ssl
이 암묵적으로 지정되어있을 수 있습니다.--ssl
옵션을 중첩 된 형식으로 지정하면 기타 SSL을 무시하고 SSL을 사용하지 않도록 지정할 수 있습니다. 이렇게는--ssl=0
또는 동의어 (--skip-ssl
,--disable-ssl
)로 옵션을 지정합니다. 예를 들어, MySQL 클라이언트 프로그램을 호출 할 때 기본적으로 SSL 연결을 사용되도록 SSL 옵션을 옵션 파일의[client]
그룹에 지정할 수 있습니다. 대신 암호화되지 않은 연결을 사용하려면 명령 줄에서--skip-ssl
을 사용하여 클라이언트 프로그램을 호출하여 옵션 파일의 옵션을 재정의합니다.MySQL 계정에 SSL 연결의 사용을 요구하려면 해당 계정에 적어도
REQUIRE SSL
절을 포함한GRANT
문을 발행합니다. MySQL에서 SSL 연결을 지원, 서버와 클라이언트가 적절한 SSL 옵션으로 시작되지 않은 경우 계정의 접속이 거부됩니다.REQUIRE
절은 기타 SSL 관련 옵션을 허용합니다. 이것을 사용하면REQUIRE SSL
보다 엄격한 요구 사항을 강제로 적용 할 수 있습니다. 다양한REQUIRE
옵션을 사용하여 구성되어있는 계정을 사용하여 연결하는 클라이언트가 어떤 SSL 명령 옵션을 지정할 수 있는지, 또는 어떤 옵션을 지정할 필요가 있는지에 대한 자세한 내용은 섹션 13.7.1.4 "GRANT 구문" 에서REQUIRE
의 설명을 참조하십시오.--ssl-ca=
file_name
신뢰할 수있는 SSL 인증 기관의 목록을 포함 PEM 형식의 파일 경로. 이 옵션은 내재적으로
--ssl
을 나타냅니다.클라이언트 연결을 설정할 때 SSL을 사용하여 서버 인증서를 인증하지 않도록 클라이언트에 지시하는 경우
--ssl-ca
도--ssl-capath
도 지정하지 않습니다. 서버는 계속 클라이언트 계정에GRANT
문을 사용하여 확립 된 적용 가능한 요구 사항에 따라 클라이언트를 확인하고 서버 시작시 지정된--ssl-ca
또는--ssl-capath
옵션 값을 사용합니다.--ssl-capath=
dir_name
PEM 형식의 신뢰할 수있는 SSL 인증 기관 인증서를 포함하는 디렉토리의 경로. 이 옵션은 내재적으로
--ssl
을 나타냅니다.클라이언트 연결을 설정할 때 SSL을 사용하여 서버 인증서를 인증하지 않도록 클라이언트에 지시하는 경우
--ssl-ca
도--ssl-capath
도 지정하지 않습니다. 서버는 계속 클라이언트 계정에GRANT
문을 사용하여 확립 된 적용 가능한 요구 사항에 따라 클라이언트를 확인하고 서버 시작시 지정된--ssl-ca
또는--ssl-capath
옵션 값을 사용합니다.OpenSSL 지원을 사용하여 구축 된 MySQL 배포는
--ssl-capath
옵션을 지원합니다. yaSSL은 어떤 디렉토리에도 표시되지 않고 체인 인증서 트리를 거치지 않기 때문에 yaSSL를 사용하여 구축 된 배포에서는 지원되지 않습니다. yaSSL는 CA 인증서 트리의 모든 구성 요소를 단일 CA 인증서 트리에 포함하여 그 파일의 각 인증서는 고유의 SubjectName 값을 가질 필요가 있습니다. 이러한 yaSSL 제한을 해결하려면 인증서 트리를 구성하는 개별 인증서 파일을 새 파일에 연결하고 파일을--ssl-ca
옵션의 값으로 지정합니다.--ssl-cert=
file_name
보안 연결을 설정하는 데 사용되는 PEM 형식의 SSL 인증서 파일의 이름입니다. 이 옵션은 내재적으로
--ssl
을 나타냅니다.--ssl-cipher=
cipher_list
SSL 암호화에 사용하는 허용되는 암호의 목록입니다. 목록에서 암호화가 지원되지 않으면 SSL 연결이 작동하지 않습니다. 이 옵션은 내재적으로
--ssl
을 나타냅니다.이식성을 최대화하려면
cipher_list
를 콜론으로 구분 된 하나 이상의 암호화 이름의 목록을 지정하도록하십시오. 이 형식은 OpenSSL과 yaSSL 모두 인식됩니다. 예 :--ssl-cipher = AES128-SHA --ssl-cipher = DHE-RSA-AES256-SHA : AES128-SHA
http://www.openssl.org/docs/apps/ciphers.html 에있는 OpenSSL의 문서에 설명 된대로 OpenSSL에서는 암호를 지정하기위한보다 유연한 구문을 지원하고 있습니다. 그러나 yaSSL에서 지원되지 않기 때문에 yaSSL를 사용하여 구축 된 MySQL 배포판에서 확장 구문을 사용하려고하면 실패합니다.
OpenSSL은 서버가 링크되어있는 버전에 따라 지원되는 암호가 다를 수 있습니다. 예를 들어, 목록에는 다음의 암호화가 포함되어있을 수 있습니다.
AES256-GCM-SHA384 AES256-SHA AES256-SHA256 CAMELLIA256-SHA DES-CBC3-SHA DHE-DSS-AES256-GCM-SHA384 DHE-DSS-AES256-SHA DHE-DSS-AES256-SHA256 DHE-DSS-CAMELLIA256-SHA DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES256-SHA DHE-RSA-AES256-SHA256 DHE-RSA-CAMELLIA256-SHA ECDH-ECDSA-AES256-GCM-SHA384 ECDH-ECDSA-AES256-SHA ECDH-ECDSA-AES256-SHA384 ECDH-ECDSA-DES-CBC3-SHA ECDH-RSA-AES256-GCM-SHA384 ECDH-RSA-AES256-SHA ECDH-RSA-AES256-SHA384 ECDH-RSA-DES-CBC3-SHA ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES128-SHA ECDHE-ECDSA-AES128-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES256-SHA ECDHE-ECDSA-AES256-SHA384 ECDHE-ECDSA-DES-CBC3-SHA ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-SHA ECDHE-RSA-AES256-SHA384 ECDHE-RSA-DES-CBC3-SHA EDH-DSS-DES-CBC3-SHA EDH-RSA-DES-CBC3-SHA PSK-3DES-EDE-CBC-SHA PSK-AES256-CBC-SHA SRP-DSS-3DES-EDE-CBC-SHA SRP-DSS-AES-128-CBC-SHA SRP-DSS-AES-256-CBC-SHA SRP-RSA-3DES-EDE-CBC-SHA SRP-RSA-AES-128-CBC-S SRP-RSA-AES-256-CBC-SHA
yaSSL는 다음의 암호화를 지원하고 있습니다.
AES128-RMD AES128-SHA AES256-RMD AES256-SHA DES-CBC-SHA DES-CBC3-RMD DES-CBC3-SHA DHE-RSA-AES128-RMD DHE-RSA-AES128-SHA DHE-RSA-AES256-RMD DHE-RSA-AES256-SHA DHE-RSA-DES-CBC3-RMD EDH-RSA-DES-CBC-SHA EDH-RSA-DES-CBC3-SHA RC4-MD5 RC4-SHA
특정 서버에서 지원되는 암호를 정확하게 확인하려면 다음 쿼리를 사용하여
Ssl_cipher_list
상태 변수의 값을 확인합니다.SHOW STATUS LIKE 'Ssl_cipher_list';
--ssl-crl=
file_name
인증서 해지 목록을 포함 PEM 형식의 파일 경로. 이 옵션은 내재적으로
--ssl
을 나타냅니다.--ssl-crl
도--ssl-crlpath
지정되지 않은 경우 CA 경로에 인증서 해지 목록이 포함되어 있어도 CRL 검사가 실행되지 않습니다.OpenSSL을 사용하여 구축 된 MySQL 배포는
--ssl-crl
옵션을 지원합니다. yaSSL는 인증서 해지 목록이 작동하지 않기 때문에 yaSSL를 사용하여 구축 된 배포에서는 지원되지 않습니다.이 옵션은 MySQL 5.6.3에서 추가되었습니다.
--ssl-crlpath=
dir_name
인증서 해지 목록을 포함 PEM 형식의 파일이 포함 된 디렉토리 경로. 이 옵션은 내재적으로
--ssl
을 나타냅니다.--ssl-crl
도--ssl-crlpath
지정되지 않은 경우 CA 경로에 인증서 해지 목록이 포함되어 있어도 CRL 검사가 실행되지 않습니다.OpenSSL을 사용하여 구축 된 MySQL 배포는
--ssl-crlpath
옵션을 지원합니다. yaSSL는 인증서 해지 목록이 작동하지 않기 때문에 yaSSL를 사용하여 구축 된 배포에서는 지원되지 않습니다.이 옵션은 MySQL 5.6.3에서 추가되었습니다.
--ssl-key=
file_name
보안 연결을 설정하는 데 사용되는 PEM 형식의 SSL 키 파일의 이름. 이 옵션은 내재적으로
--ssl
을 나타냅니다.MySQL 배포판이 OpenSSL 또는 (MySQL 5.6.3 시점의) yaSSL를 사용하여 구축 된 키 파일이 암호로 보호되어있는 경우 프로그램에서 암호를 입력하라는 메시지가 사용자에게 표시됩니다. 암호는 대화식으로 지정해야 파일에 저장 될 수 없습니다. 암호가 올바르지 않으면 키를 읽을 수없는 경우와 마찬가지로 프로그램이 계속됩니다. MySQL 5.6.3 이전에서는 MySQL 배포판을 yaSSL를 사용하여 구축 된 키 파일이 암호로 보호되어있는 경우 오류가 발생합니다.
--ssl-verify-server-cert
이 옵션은 클라이언트 프로그램에서만 사용할 수 있으며 서버에서는 사용할 수 없습니다. 이렇게하면 서버가 클라이언트에 보내는 인증서의 서버 Common Name 값이 클라이언트에 의해 확인됩니다. 클라이언트는 서버에 연결할 때 클라이언트에서 사용되는 호스트 이름과 일치하는 이름을 확인하고 일치가 없으면 연결에 실패합니다. 이 기능은 중간자 공격을 방지하기 위해 사용할 수 있습니다. 검증은 기본적으로 비활성화되어 있습니다.