我的服务器端已按要求支持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/serialopenssl req -new -x509 -keyout $PRIV/cakey.pem -out $DIR/cacert.pem -config $DIR/openssl.cnfopenssl 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.pemopenssl 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.pem2.修改配置文件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连接,所有登录都是可以正常工作的

解决方案 »

  1.   

    Unable to get certificate from '/ccrun/mysql4/openssl/client-cert.pem'
      

  2.   

    看一下这个:
    http://www.secondlifeinsider.com/2007/08/10/cmp-certifiably-unable-to-get-linden-labs-name-right/
      

  3.   

    谢谢回复,但是在
    http://www.secondlifeinsider.com/2007/08/10/cmp-certifiably-unable-to-get-linden-labs-name-right/这个链接里我怎么找不到我所需要的资料啊。
    我估计问题还是在Mysql里,可能哪个开头没打开或设置有误啊,搜遍了所有资料也没找到一个连接实例,郁闷ing
      

  4.   

    现在的错误就剩下最后一句话了ERROR 2026 (HY000): SSL connection error
      

  5.   

    http://dev.mysql.com/doc/refman/5.1/zh/error-handling.html根据这个错误再检查一下。
      

  6.   

    Hi ,yueliangdao0608,我估计是不是自己的客户端程序和服务端程序在同一台机器上造成的啊?Mysql的服务端和客户端都安装在Linux服务器上(假定名为Server1),然后我们平常使用数据库时在Windows机器上通过SSH Secure Shell终端登录到Linux上,然后其实执行的客户端程序就本身是Linux服务器上的客户端,我觉得是不是因为并不存在远程连接所以SSL连接就失败了?
      

  7.   

    难道都没人用过SSL?加分了,100分求助!!!!!