SSL:Ubuntu证书配置
CA证书的配置
Ubuntu上CA证书的配置可以通过工具ca-certificates来方便的进行。该工具默认是随Ubuntu安装的,如果没有可以通过下面的命令来安装:
sudo apt-get install ca-certificates
需要安装CA证书我们只需要将其放在”/usr/share/ca-certificates”目录或其子目录下,ca-certificates工具就能自动扫描到。为了不与其它根证书混淆,我们创建一个子目录名为”extra”:
sudo mkdir /usr/share/ca-certificates/extra
然后将待安装的证书拷贝到刚刚创建的目录下:
sudo cp CASHLibCACert.crt /usr/share/ca-certificates/extra/CASHLibCACert.crt
(注意这里的证书是.crt的扩展名)
接下来让ca-certificates工具帮我们安装CA证书:
sudo dpkg-reconfigure ca-certificates
选择”Yes”,我们能看到待安装的CA证书已经被扫描到了,选中它(点空格键)然后选”OK”就行了。
看到这样的消息就说明CA证书已经安装成功了
那么安装的CA证书在哪里呢,Ubuntu把所有的证书都放在”/etc/ssl/certs”目录下,包括CA证书和普通的证书。来看看刚刚安装好的证书:
CASHLibCACert.pem就是CA证书。 我们安装的时候证书扩展名是.crt,安装后扩展名变为了.pem。这两者的内容其实是一样的。CASHLibCACert.pem就是CA证书。 我们安装的时候证书扩展名是.crt,安装后扩展名变为了.pem。.crt证书是按base64编码的,如果.pem也采用base64编码,那么这两者是可以通用的。在本例中,CA证书的内容在安装前后没有变化。
普通证书的配置
普通证书是指除CA之外的证书,真正用来做身份认证或签名的证书。相对而言,CA证书用来验证普通证书的可信性。
普通证书没有特别的安装步骤,放在任意可以访问的目录下就可以了。当然也可以拷贝到Ubuntu的证书目录下,跟刚刚安装的CA证书在同一目录——”/etc/ssl/certs”
证书的使用
以Python代码为例,测试采用TLS协议的SSL连接:
import socket,ssl,pprint
addr=('10.175.13.159', 56001)
s =socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(addr)
#cert_file="/home/guagua/Documents/CASHLibClient.pem"
cert_file="/etc/ssl/certs/CASHLibClient.pem"
ssl_sock=ssl.wrap_socket(s,certfile=cert_file,ca_certs="/etc/ssl/certs/CASHLibCACert.pem"
,cert_reqs=ssl.CERT_REQUIRED,ssl_version=ssl.PROTOCOL_TLSv1)
peername = ssl_sock.getpeername()
print peername