MySQL可以檢查X509證書的屬性和基于用戶名和密碼的通用鑒定方法。要想為MySQL賬戶指定SSL相關選項,使用GRANT語句的REQUIRE子句。參見13.5.1.3節,“GRANT和REVOKE語法”。
有多種可能來限制一個賬戶的連接類型:
· 如果賬戶沒有SSL或X509需求,如果用戶名和密碼合法,允許未加密的連接。但是,如果客戶有正確的證書和密鑰文件,在客戶選項中可以使用加密連接。
· REQUIRE SSL選項限制服務器只允許該賬戶的SSL加密連接。請注意如果有ACL記錄允許非SSL連接,該選項會被忽略。
· mysql> GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost'
· -> IDENTIFIED BY 'goodsecret' REQUIRE SSL;
· REQUIRE X509表示客戶必須有合法證書但確切的證書、分發者和主體不重要。唯一的需求是應可以被某個CA認證機構驗證它的簽名。
· mysql> GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost'
· -> IDENTIFIED BY 'goodsecret' REQUIRE X509;
· REQUIRE ISSUER 'issuer'限制連接企圖,即客戶必須出示CA 'issuer'簽發的合法X509證書。如果客戶出示了一個合法證書,但是是由不同的分發者簽發,服務器拒絕連接。使用X509證書表示要加密,因此不需要SSL選項。
· mysql> GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost'
· -> IDENTIFIED BY 'goodsecret'
· -> REQUIRE ISSUER '/C=FI/ST=Some-State/L=Helsinki/
· O=MySQL Finland AB/CN=Tonu Samuel/Email=tonu@example.com';
請注意ISSUER值應做為單一字符串輸入。
· REQUIRE SUBJECT 'subject' 限制連接企圖,即客戶必須出示主題為'subject'的合法X509證書。如果客戶出示了一個合法證書,但是有不同的主題,服務器拒絕連接。
· mysql> GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost'
· -> IDENTIFIED BY 'goodsecret'
· -> REQUIRE SUBJECT '/C=EE/ST=Some-State/L=Tallinn/
· O=MySQL demo client certificate/
CN=Tonu Samuel/Email=tonu@example.com';
請注意SUBJECT值應做為單一字符串輸入。
· REQUIRE CIPHER 'cipher'用來確保使用足夠強的密碼和密鑰長度。如果使用舊的短加密密鑰算法,SSL本身可能很弱。使用該選項,我們可以索取確切的加密方法來連接。
· mysql> GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost'
· -> IDENTIFIED BY 'goodsecret'
-> REQUIRE CIPHER 'EDH-RSA-DES-CBC3-SHA';
在REQUIRE子句中,可以結合使用SUBJECT、ISSUER和CIPHER選項:
mysql> GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost'
-> IDENTIFIED BY 'goodsecret'
-> REQUIRE SUBJECT '/C=EE/ST=Some-State/L=Tallinn/
O=MySQL demo client certificate/
CN=Tonu Samuel/Email=tonu@example.com'
-> AND ISSUER '/C=FI/ST=Some-State/L=Helsinki/
O=MySQL Finland AB/CN=Tonu Samuel/Email=tonu@example.com'
-> AND CIPHER 'EDH-RSA-DES-CBC3-SHA';
請注意SUBJECT和ISSUER值應做為單一字符串輸入。
在MySQL 5.1中,在REQUIRE選項之間可以選用AND關鍵字。
選項的順序不重要,但任何選項不能用兩次。