欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

如何為MySQL設(shè)置SSL證書

如何為MySQL設(shè)置SSL證書?

MySQL默認(rèn)的數(shù)據(jù)通道是不加密的,在一些安全性要求特別高的場(chǎng)景下,我們需要配置MySQL端口為SSL,使得數(shù)據(jù)通道加密處理,避免敏感信息泄漏和被篡改。

當(dāng)然,啟用MySQL SSL之后,由于每個(gè)數(shù)據(jù)包都需要加密和解密,這個(gè)對(duì)MySQL的性能是有不小影響的,讀者們?cè)谑褂玫臅r(shí)候,要根據(jù)實(shí)際情況斟酌。

MySQL客戶端登錄服務(wù)器時(shí)候的密碼不是明文傳輸,有加密策略處理。

筆者是在 ubuntu12.04 系統(tǒng)上使用MySQL 5.5版本測(cè)試的,其他環(huán)境請(qǐng)讀者自行匹配。

配置MySQL服務(wù)器證書

編輯 /etc/mysql/my.cnf 文件

# ssl-ca=/etc/mysql/cacert.pem

# ssl-cert=/etc/mysql/server-cert.pem

# ssl-key=/etc/mysql/server-key.pem

把上面三行默認(rèn)證書配置注釋打開,使用自己的證書。筆者就使用上次在搭建自己的CA服務(wù) – OpenSSL CA 實(shí)戰(zhàn)文章中生成的證書

ssl-ca=/home/yunweipai/user_certs/ca_cert.cer

ssl-cert=/home/yunweipai/user_certs/web.cer

ssl-key=/home/yunweipai/user_certs/web_key_plain.pem

這里需要注意的是,在ubuntu上,配置證書后如果不生效,參考這里解決方法

注意上面配置的 web_key_plain.pem 文件,由于MySQL不支持加密后的私鑰,因此我們使用命令

openssl rsa -in web_key.pem -passin pass:Yunweipai@123 -out web_key_plain.pem

將私鑰解密。MySQL不支持私鑰加密的原因是從安全性角度考慮,因?yàn)槿绻脩魝鬟f一個(gè)加密的私鑰,那么必須要用戶傳密碼,那么MySQL怎么存儲(chǔ)這個(gè)密碼呢?這就引出了我們?cè)诿艽a存儲(chǔ)和傳輸?shù)陌踩ㄗh里面提到的一系列問題了。

所以MySQL為了簡(jiǎn)化實(shí)現(xiàn),就不支持私鑰加密。

指定客戶端連接方式

MySQL服務(wù)端在對(duì)客戶端授權(quán)的時(shí)候,可以通過選項(xiàng)指定客戶端連接MySQL 服務(wù)器的SSL級(jí)別,參考MySQL賦權(quán)的 REQUIRE值:

ssl_option

SSL: 不認(rèn)證客戶端,客戶端不需要提供證書

X509: 客戶端必須發(fā)送一個(gè)有效的X509證書

issuer: 客戶端的證書是否是服務(wù)器所配置的CA頒發(fā)的(在我們場(chǎng)景下是ca_cert.cer頒發(fā)的證書)

subject: 認(rèn)證證書的subject(關(guān)于證書的subject在之前的文章有介紹)

cipher: 指定加密算法

這些選項(xiàng)可以疊加使用,如:X509|issuser

客戶端連接(SSL方式)

mysql 客戶端連接

mysql -u root -pChangeme_123 -P 3306 --ssl-ca=/home/yunweipai/user_certs/ca_cert.cer

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 36

Server version: 5.5.43-0ubuntu0.12.04.1 (Ubuntu)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> \s

--------------

mysql Ver 14.14 Distrib 5.5.43, for debian-linux-gnu (i686) using readline 6.2

Connection id: 36

Current database:

Current user: root@localhost

SSL: Cipher in use is DHE-RSA-AES256-SHA

Current pager: stdout

Using outfile: ''

Using delimiter: ;

Server version: 5.5.43-0ubuntu0.12.04.1 (Ubuntu)

Protocol version: 10

Connection: Localhost via UNIX socket

Server characterset: latin1

Db characterset: latin1

Client characterset: latin1

Conn. characterset: latin1

UNIX socket: /var/run/mysqld/mysqld.sock

Uptime: 29 sec

Threads: 1 Questions: 109 Slow queries: 0 Opens: 48 Flush tables: 1 Open tables: 41 Queries per second avg: 3.758

--------------

JDBC連接

在jdbc字符串中增加下面參數(shù)

useSSL=true&verifyServerCertificate=false

這么就不需要客戶端配置證書了,配置就簡(jiǎn)單很多。因?yàn)閙ysql本身有賬號(hào)口令認(rèn)證,因此不需要證書認(rèn)證。