诚恳求助:客户端如何SSL连接到服务器上?
我的服务器端已按要求支持SSL连接,但客户机怎么都连不上,步骤如下:
1.根据官方网站的说明安装SSL认证:
DIR=`pwd`/openssl
PRIV=$DIR/private
mkdir $DIR $PRIV $DIR/newcerts
cp /usr/share/ssl/openssl.cnf $DIR
replace ./demoCA $DIR -- $DIR/openssl.cnf
touch $DIR/index.txt
echo "01" > $DIR/serial
openssl req -new -x509 -keyout $PRIV/cakey.pem -out $DIR/cacert.pem -config $DIR/openssl.cnf
openssl req -new -keyout $DIR/server-key.pem -out $DIR/server-req.pem -days 3600 -config $DIR/openssl.cnf
openssl rsa -in $DIR/server-key.pem -out $DIR/server-key.pem
openssl ca -policy policy_anything -out $DIR/server-cert.pem -config $DIR/openssl.cnf -infiles $DIR/server-req.pem
openssl req -new -keyout $DIR/client-key.pem -out $DIR/client-req.pem -days 3600 -config $DIR/openssl.cnf
openssl rsa -in $DIR/client-key.pem -out $DIR/client-key.pem
openssl ca -policy policy_anything -out $DIR/client-cert.pem -config $DIR/openssl.cnf -infiles $DIR/client-req.pem
2.修改配置文件my.cnf,在[server]节点下加入
ssl-ca=$DIR/cacert.pem
ssl-cert=$DIR/server-cert.pem
ssl-key=$DIR/server-key.pem
在这里没在[client]节点下加上有关客户端的有关信息,因为如果这里加上好像所有客户端登录都需要SSL连接,这样我哪个用户都登录不上了。于是下面我只针对一个特定用户作了一下试验。
3.重启服务器,这时服务器通过输入正确的Pem phrase启动成功,经查询也的确支持SSL连接
4.在服务器上,用Grant命令要求对用户AA@localhost登录时使用SSL连接。执行命令如下:
grant all on *.* to AA@localhost require SSL(X509也试过)
5.然后在客户端登录,命令如下:(无密码)
mysql -uAA -hlocalhost --ssl-ca=/ccrun/mysql4/openssl/cacert.pem --ssl-cert =/ccrun/mysql4/openssl/client-cert.pem --ssl-key = /ccrun/mysql4/openssl/client-key.pem
说明:$DIR==/ccrun/mysql4/openssl
但就是这时总是报错,我试了很多方法都无法正确连上,错误如下
Error when connection to server using SSL:28791:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:632:Expecting: CERTIFICATE
28791:error:140AD009:SSL routines:SSL_CTX_use_certificate_file:PEM lib:ssl_rsa.c:534:
Unable to get certificate from '/ccrun/mysql4/openssl/client-cert.pem'
ERROR 2026 (HY000): SSL connection error
哪位高手能帮助指点一下吗?我是不是少做了哪个步骤或错做了哪个步骤呢?不胜感激!!
注:如果客户端不指定要SSL连接,所有登录都是可以正常工作的