SSL 연결은 mysql 클라이언트에서는 작동하지만 Perl DBI에서는 작동하지 않습니다.마리아DB
TLS를 사용하여 연결하기 위해 자체 서명 인증서가 설정된 MariaDB 서버가 있습니다.이는 해당 클라이언트와 연결할 때 작동합니다.
$ mysql -u xxxx -h xx.xx.xx.xx -p
\s shows:
mysql Ver 15.1 Distrib 10.1.37-MariaDB, for debian-linux-gnu (x86_64)
SSL: Cipher in use is DHE-RSA-AES256-SHA
.my.cnf에는 다음이 포함됩니다.
$ cat ~/.my.cnf
[client]
ssl-cert=/---path-deleted---/client-cert.pem
ssl-key=/---path-deleted---/client-key.pem
문제:이러한 설정을 사용하여 Perl 스크립트에서 연결할 수 없습니다.SSL이 없으면 스크립트가 작동합니다.스크립트에서 SSL을 활성화하고 서버에서 SSL을 적용하면 다음과 같은 메시지가 나타납니다.
failed: SSL connection error: ASN: bad other signature confirmation
openssl로 인증서를 확인하면 다음과 같이 표시됩니다.
$ openssl verify ca-cert.pem client-cert.pem server-cert.pem
error 18 at 0 depth lookup: self signed certificate
인증서는 실제로 자체 서명된 것이며, 저는 그렇게 유지하고 싶습니다.
"sladb_ssl_sl_sl_sl_sl_server_cert=0"을 사용하면 다음 메시지가 표시됩니다.
failed: SSL connection error: Enforcing SSL encryption is not supported without mariadb_ssl_verify_server_cert=1
Perl에서 TLS 연결이 작동하려면 무엇을 변경해야 합니까?
참조를 위해 커넥트 서브에 있는 코드 라인을 복사합니다.mysql_ssl=1 IIRC만을 사용하여 mysql(mariadb가 아님)이 있는 이전 시스템에서 작동하는 매우 유사한 코드:
$self->{dsn} = "DBI:MariaDB:database=$database;host=$db_host;mariadb_ssl=1;".
"mariadb_ssl_verify_server_cert=1;".
"mariadb_ssl_ca_file=/---path---/ca-key.pem;".
"mariadb_ssl_client_key=/---path---/client-key.pem;".
"mariadb_ssl_client_cert=/---path---/client-cert.pem";
$self->{dbh} = DBI->connect($self->{dsn}, $db_user, $db_passwd,
{'RaiseError' => 1, 'PrintError' => 1, AutoCommit => 1});
DBI:mysql을 사용했지만 비슷한 문제가 있었습니다.SSL 인증서 CN에 지정된 대로 서버 이름이 아닌 연결 문자열에 IP 주소를 지정한 것이 문제였습니다.mysql 명령줄 클라이언트는 신경쓰지 않았지만 DBI:mysql은 신경씁니다.
인증서의 CN을 얻기 위해 https://serverfault.com/a/931652/243186 에 따라 openssl을 사용했습니다.
그런 다음 CN이 연결 중인 인터페이스의 IP와 일치하도록 /etc/hosts 파일에 항목을 추가해야 했습니다.
MySQL 서버 소유자가 연결할 수 있는 모든 가능한 서버 이름과 IP를 지정하는 SSL SAN 인증서를 생성하는 것이 대안이 될 수 있습니다.
언급URL : https://stackoverflow.com/questions/55189991/ssl-connection-works-with-mysql-client-but-not-perl-dbimariadb
'programing' 카테고리의 다른 글
하나의 열을 여러 개의 외부 키로 참조할 수 있습니까? (0) | 2023.09.03 |
---|---|
MySQL에서 중복 레코드만 선택하여 표시 (0) | 2023.09.03 |
문자열에 제로 패딩 추가 (0) | 2023.09.03 |
Git: 분기된 로컬 분기의 모든 변경 내용 삭제 (0) | 2023.09.03 |
Haml에 인라인 자바스크립트를 어떻게 포함합니까? (0) | 2023.09.03 |