현재 위치: > 최신 기사 목록> SSL_SET 함수를 사용하여 SSL을 설정 한 후 암호화되지 않은 이유는 무엇입니까? 가능한 이유는 무엇입니까?

SSL_SET 함수를 사용하여 SSL을 설정 한 후 암호화되지 않은 이유는 무엇입니까? 가능한 이유는 무엇입니까?

M66 2025-06-23

1. ssl_set () 의 순서가 잘못되었습니다

mysqli :: real_connect ()를 호출하기 전에 mysqli :: ssl_set () 함수를 호출해야합니다. 그렇지 않으면 설정이 적용되지 않습니다. 잘못된 전화 순서는 가장 일반적인 감독 중 하나입니다.

Error example:

$conn = new mysqli(); $conn->real_connect('db.m66.net', 'user', 'pass', 'database'); $conn->ssl_set('/path/client-key.pem', '/path/client-cert.pem', '/path/ca.pem', NULL, NULL);

Correct example:

$conn = new mysqli(); $conn->ssl_set('/path/client-key.pem', '/path/client-cert.pem', '/path/ca.pem', NULL, NULL); $conn->real_connect('db.m66.net', 'user', 'pass', 'database');

2. mysqli_client_ssl 플래그가 활성화되지 않았습니다

real_connect () Connection을 사용하는 경우 MySQLI_CLIENT_SSL 플래그가 전달되지 않으면 SSL_SET ()가 호출 되더라도 연결이 SSL을 활성화하지 못할 수 있습니다.

$conn->real_connect('db.m66.net', 'user', 'pass', 'database', null, null, MYSQLI_CLIENT_SSL);

3. 클라이언트에서 OpenSSL 지원이 활성화되지 않습니다

PHP가 OpenSSL 확장을 활성화했는지 확인하는 것이 중요합니다. php -m |를 실행하여 확인할 수 있습니다 grep은 phpinfo () 또는 명령 줄을 통해 OpensSL입니다 . 활성화되지 않으면 PHP는 SSL 암호화 된 연결을 설정할 수 없습니다.

4. SSL은 MySQL 서버에서 활성화되지 않았거나 완전히 구성되지 않았습니다.

서버는 또한 SSL을 활성화하고 법적 인증서 및 CA 파일을 제공해야합니다. 다음 SQL 문을 통해 확인할 수 있습니다.

SHOW VARIABLES LIKE '%ssl%';

결과에 HAME_SSL이 비활성화되어 있음이 표시되면 클라이언트 설정에 관계없이 SSL이 적용되지 않습니다.

5. SSL을 지원하지 않는 라이브러리 또는 드라이버가 사용됩니다.

일부 이전 버전의 PHP 또는 LibMySqlClient Connection 라이브러리는 SSL을 지원하지 않거나 지원하기 위해 특정 컴파일 옵션이 필요할 수 있습니다. SSL을 기본적으로 지원하고 더 현대적이기 때문에 MySQLND 드라이버를 사용하는 것이 좋습니다.

6. 암호화에 대한 연결이 활성화되어 있는지 확인하십시오

모든 것이 올바르게 구성 되더라도 연결이 활성화되어 있는지 확인해야합니다. 다음 진술을 통해 실제 암호화 상태를 볼 수 있습니다.

$result = $conn->query("SHOW STATUS LIKE 'Ssl_cipher'"); $row = $result->fetch_assoc(); if (!empty($row['Value'])) { echo "SSL 启用,加密算法为: " . $row['Value']; } else { echo "SSL 未启用"; }

반품이 비어 있으면 SSL이 실제로 활성화되지 않습니다.

7. 도메인 이름 또는 IP 주소로 인한 암시 적 반환

일부 환경에서 LocalHost를 사용하는 경우 연결이 UNIX 소켓으로 돌아와서 네트워크 계층 SSL을 우회 할 수 있습니다. 예를 들어 명시 적 호스트 이름 또는 IP 주소를 사용하는 것이 좋습니다.

$conn->real_connect('db.m66.net', 'user', 'pass', 'database');