在当今的网络环境中,确保数据传输的安全性至关重要,Python作为一种流行的编程语言,在处理HTTPS和SSL证书方面提供了强大的支持,以下将详细介绍Python中如何处理HTTPS和SSL证书,并探讨相关的问题。
HTTPS简介
HTTPS(HyperText Transfer Protocol Secure)是一种安全的网络传输协议,它在HTTP的基础上加入了SSL/TLS协议,用于加密客户端和服务器之间的通信,这有助于保护用户数据免受中间人攻击和其他形式的网络监听。
Python处理HTTPS
使用库
Python的库是一个简单易用的HTTP客户端库,它支持HTTPS请求,以下是一个使用库发送HTTPS请求的基本示例:
import requestsresponse = requests.get('https://www.example.com')print(response.text)
SSL证书验证
默认情况下,库会验证SSL证书的有效性,如果证书有问题,它会抛出一个异常,要自定义SSL证书验证,可以使用参数:
response = requests.get('https://www.example.com', verify=False)
禁用证书验证可能会使你的应用程序容易受到中间人攻击。
SSL证书管理
生成自签名证书
如果你没有从受信任的证书颁发机构获取证书,可以自己生成一个自签名证书,以下是一个使用Python生成自签名证书的示例:
from OpenSSL import crypto# 生成私钥key = crypto.PKey()key.generate_key(crypto.TYPE_RSA, 2048)# 生成证书cert = crypto.X509()cert.set_serial_number(1)cert.gmtime_adj_notBefore(0)cert.gmtime_adj_notAfter(10*365*24*60*60)cert.set_issuer(cert.get_subject())cert.set_subject(cert.get_subject())cert.set_pubkey(key)cert.sign(key, 'sha256')# 保存证书和私钥with open('mycert.pem', 'wb') as f:f.write(cert.export_key('PEM'))with open('mykey.pem', 'wb') as f:f.write(key.export_key('PEM'))
使用证书
在使用自签名证书或从CA获取的证书时,你需要确保你的应用程序可以正确加载和验证这些证书。
表格:Python处理HTTPS和SSL证书的关键步骤
| 步骤 | 描述 | 代码示例 |
|---|---|---|
| 发送HTTPS请求 | 使用库发送HTTPS请求 |
response = requests.get('https://www.example.com')
|
| 自定义SSL证书验证 | 使用参数自定义SSL证书验证 |
response = requests.get('https://www.example.com', verify=False)
|
| 生成自签名证书 | 生成自签名证书用于测试或私有网络 |
from OpenSSL import crypto
|
| 使用证书 | 加载并使用证书进行HTTPS通信 |
response = requests.get('https://www.example.com', cert=('mycert.pem', 'mykey.pem'))
|
Q1: 为什么HTTPS比HTTP更安全?
A1: HTTPS通过SSL/TLS协议对数据进行加密,这可以防止数据在传输过程中被窃听或篡改,HTTPS使用证书验证,确保你与正确的服务器通信。
Q2: 如何处理SSL证书过期的问题?
A2: 当SSL证书过期时,你需要获取一个新的证书,这通常涉及从证书颁发机构购买或生成一个新的自签名证书,你需要更新你的应用程序以使用新的证书,并确保服务器配置正确。
如何创建一个自签名的SSL证书
创建自签名证书的步骤注意:以下步骤仅用于配置内部使用或测试需要的SSL证书。 第1步:生成私钥使用openssl工具生成一个RSA私钥$ openssl genrsa -des3 -out 2048说明:生成rsa私钥,des3算法,2048位强度,是秘钥文件名。 注意:生成私钥,需要提供一个至少4位的密码。 第2步:生成CSR(证书签名请求)生成私钥之后,便可以创建csr文件了。 此时可以有两种选择。 理想情况下,可以将证书发送给证书颁发机构(CA),CA验证过请求者的身份之后,会出具签名证书(很贵)。 另外,如果只是内部或者测试需求,也可以使用OpenSSL实现自签名,具体操作如下:$ openssl req -new -key -out 说明:需要依次输入国家,地区,城市,组织,组织单位,Common name和Email。 其中Common Name,可以写自己的名字或者域名,如果要支持https,Common Name应该与域名保持一致,否则会引起浏览器警告。 Country Name (2 letter code) [AU]:CNState or Province Name (full name) [Some-State]:BeijingLocality Name (eg, city) []:BeijingOrganization Name (eg, company) [Internet Widgits Pty Ltd]:joyiosOrganizational Unit Name (eg, section) []:info technologyCommon Name (e.g. server FQDN or YOUR name) [] Address []第3步:删除私钥中的密码在第1步创建私钥的过程中,由于必须要指定一个密码。 而这个密码会带来一个副作用,那就是在每次Apache启动Web服务器时,都会要求输入密码,这显然非常不方便。 要删除私钥中的密码,操作如下:cp rsa -in -out 第4步:生成自签名证书如果你不想花钱让CA签名,或者只是测试SSL的具体实现。 那么,现在便可以着手生成一个自签名的证书了。 $ openssl x509 -req -days 365 -in -signkey -out 说明:crt上有证书持有人的信息,持有人的公钥,以及签署者的签名等信息。 当用户安装了证书之后,便意味着信任了这份证书,同时拥有了其中的公钥。 证书上会说明用途,例如服务器认证,客户端认证,或者签署其他证书。 当系统收到一份新的证书的时候,证书会说明,是由谁签署的。 如果这个签署者确实可以签署其他证书,并且收到证书上的签名和签署者的公钥可以对上的时候,系统就自动信任新的证书。 第5步:安装私钥和证书将私钥和证书文件复制到Apache的配置目录下即可,在Mac 10.10系统中,复制到/etc/apache2/目录中即可。 需要注意的是,在使用自签名证书时,浏览器会提示证书不受信任,如果你是对外网站使用,建议还是去CA机构申请可信的SSL证书,现在证书也很便宜,沃通CA超快SSL Pre才488元/年。
回答不了问题?
网络不稳定影响到页面的正常显示; 3)电脑设置问题。建议您删除电脑临时文件再尝试登陆,具体是:打开IE浏览器-
internet选项-删除cookies(确定)-删除文件(删除所有脱机内容-确定)-确定。或
者将您电脑安全级别设置为默认或者降低状态,重启电脑后重新尝试登陆看看。 4)INTERNET 选项里的安全级别选太高了吧或被诸如雅虎助手3721的拦截了。 第一次
进入 财付通 页面会出现一个警告信息的提示。这个是个安全证书,一定要选择 “是
” ,不然,无法继续操作。 这不是病毒。 再去尝试一下别的 https 站点 , 如工行
的:若这个也进不去, 说
明是 https 协议的问题 , 确认 IE 设置的 ssl2.0 和 ssl3.0 已开放,且防火墙
、 3721 等没有阻止 443 端口( https )。另外您可以点击 IE 浏览器的工具栏
>>Internet 选项 >> 安全 >> 受信任的站点中把加入进
去,点击确定即可。 5):没有打SP4的补丁的拍友试着去打上。 6):如果用IE的,下载了一个ie6setup ,升级了自己的浏览器。 7):设置的分辨率是否太低.试着设置为1024*768以上 8):用腾讯的浏览器TT试试。
如何在测试环境中 应用https
到深圳易维信-EVTrust申请一个SSL证书制作服务器证书(最终形成一个pkcs12文件,包含服务器密钥、证书和CA的证书)假设我们把服务器相关的东西生成到CA的$HOME/testca/test/server目录里:mkdir-p$HOME/testca/test/servercd$HOME/testca/test/server 2.1创建服务器公钥密钥,并同时生成一个服务器证书请求/ -outformPEM -subj/O=ABCom/OU=servers/CN=servername执行命令过程中输入密钥保护密码。 执行后可以用以下命令查看请求内容-text-noout 2.2用测试CA签署服务器证书:把拷贝到CA的某目录下,我们就可以按照《利用openssl创建一个简单的CA》里的“CA的日常操作”的“1.根据证书申请请求签发证书”章节进行证书签发了-config$HOME/testca/conf/执行过程中需要输入CA私钥的保护密码。 执行完后可以用以下命令查看证书内容-text-noout 2.3制作服务器pkcs12文件(包含服务器密钥、证书和CA的证书)/ -outtomcat.p12-nametomcat-CAfile$HOME/testca// -canameroot-chain执行过程中要输入服务器密钥的保护密码()和新生成的tomcat.p12的保护密码,我们都输入。 创建完成后,把pkcs12文件拷贝到tomcat的conf目录下。 创建服务器信任的客户端CA证书库:同方法一的对应章节,这里,我们假设客户端个人证书(后续章节介绍如何生成客户端个人证书)也是由测试CA签发的,所以我们要把证书导入信任证书库 可以用以下命令查看信任证书库内容-keypass-storepass-list-v 4.配置Tomcat支持HTTPS双向认证(服务器将认证客户端证书):修改tomcat的conf目录里的文件($TOMCAT_HOME/conf/),找到类似下面内容的配置处,添加配置如下:注意:其中keystore的keystoreType与方法一的配置不同。 经以上配置后,重启tomcat,服务器就支持HTTPS双向认证了。














发表评论