SSL加密编程(1) 概述

SSL是TCP/IP环境上的标准的安全加密传输协议。SSL的全称是安全的Socket层,它具有与Socket类似的客户端/服务器体制。常见的https即http+ssl,从安全的角度看,https的安全技术就是SSL加密。从建立服务的角度,配置一个web服务器提供https服务,其关键就是获取和设置所需的SSL服务器证书。SSL基本的安全约束是对服务器的验证,这一安全约束被用来防止钓鱼网站仿冒合法的网站,从而防止客户端向假的服务器,如仿冒电子邮件或者网银外观的网站,提供登录口令等敏感数据。注册一个与知名公司相似的域名、仿造一模一样的页面是很容易的,如app1e.com、taobao.aution.com这样的李鬼域名,很容易蒙过一不留神的上网者。由于从VeriSign等主要的数字证书服务商那里获取与仿冒域名一致的数字证书则几乎是一件不可能的事情,通过浏览器端内置的强制服务器证书验证,用户只需关注浏览器的https锁头标志即可防止陷入这些仿冒网站的陷阱。另一方面,SSL的加密是端到端的,这意味着从用户端直到服务器端的任何中间环节都无法查看SSL通讯的内容。只要客户端应用程序(如浏览器)与合法服务器成功建立了SSL连接,wifi无线信号、路由器、运营商等通信数据流过的环节上的任何地方的任何人,都无法解密查看通信内容。这一安全能力也是Google在全面使用https(即SSL加密通信)后,被整个墙掉的原因之一。这里我们可以推测到,即使是拥有巨大资源的墙,在面对SSL时,也不能对通信内容进行较为全面的分析过滤,最后不得不把Google整个墙掉了事。

SSL支持可选的客户端验证,在面向特定用户的高安全性应用中,如网银、第三方支付等,服务器也需要验证客户端的身份。基于用户数字证书的SSL客户端验证,能够提供比口令更强的安全性。这一点,在央行2015支付规范中得到了认可。规范明确了,第三方支付机构如果采用基于数字证书的客户端验证,不受单日最多5000元的限制。

SSL利用公钥技术,无须在通信双方预先共享任何秘密密钥或者口令,就能够在彼此之间建立可信赖的安全连接。SSL对网络没有额外的要求,只要通信双方能够建立普通的TCP连接,它们就能够在这个普通连接之上建立安全的SSL加密连接。这一点与IPSec恰恰相反,IPSec把加密工作留给了网络,对于应用程序是透明的。显然,目前的互联网没有对公众提供IPSec服务。对于互联网应用开发者,SSL是适用的网络通信数据加密手段。选用SSL加密时,证书和密钥管理,如获取和维护数字证书等,需要应用的设计者予以考虑。在拥有良好的PKI公钥基础设施的环境中,这个问题会包在PKI身上解决。反之,应用开发者需要规划应用级的数字证书管理机制。在这种情形下,证书管理不会很复杂,但这仍然是开发者使用SSL的过程中,需要理解和处理的重要问题之一。现在的应用APP越来越多地把Web服务作为用户终端和服务器,服务器与服务器之间交互的方式。这里我们必须注意,这些更高层的网络服务交付机制,并没有发明新的网络通信安全机制,它们会直接使用SSL之类的网络传输加密协议所提供的安全能力。安全使用这些更高级的应用服务,要处理的证书管理和密钥管理、安全特性就是其加密通信机制的相关工作。

SSL的所面临安全威胁主要是中间人攻击。由于实施中间人攻击的攻击者必须让攻击者掌控的CA根证书进入客户端的受信任CA证书存储库,这一操作一般会需要管理员账户的人工许可,适当的安全教育能够缓解这一威胁。

SSL协议本身在客户端和服务器端有着较为复杂的交互和状态迁移过程,所幸,这一部分的工作已经在支持SSL的各种加密开发库中得到了很好的实现。下面,我们将讨论在windows、android、linux等不同平台环境下的ssl加密编程问题。包括的主要内容,一是所采用的加密库函数的结构和使用方法,二是所需的数字证书的获取与管理。

时间: 2024-10-26 13:22:45

SSL加密编程(1) 概述的相关文章

SSL编程(1) 概述

文章来自本园马若望 SSL是TCP/IP环境上的标准的安全加密传输协议.SSL的全称是安全的 Socket层,它具有与Socket类似的客户端/服务器体制.常见的https即http+ssl,从安全的角度看,https的安全技术就是SSL 加密.从建立服务的角度,配置一个web服务器提供https服务,其关键就是获取和设置所需的SSL服务器证书.SSL基本的安全约束是对服务器的验 证,这一安全约束被用来防止钓鱼网站仿冒合法的网站,从而防止客户端向假的服务器,如仿冒电子邮件或者网银外观的网站,提供

SSL工作原理,SSL加密原理,SSL证书怎么加密

SSL是一个安全协议,它提供使用 TCP/IP 的通信应用程序间的隐私与完整性.因特网的 超文本传输协议(HTTP)使用 SSL 来实现安全的通信. 在客户端与服务器间传输的数据是通过使用对称算法(如 DES 或 RC4)进行加密的.公用密钥算法(通常为 RSA)是用来获得加密密钥交换和数字签名的,此算法使用服务器的SSL数字证书中的公用密钥.有了服务器的SSL数字证书,客户端也可以验证服务器的身份.SSL 协议的版本 1 和 2 只提供服务器认证.版本 3 添加了客户端认证,此认证同时需要客户

MySQL8开启ssl加密

1 概述 MySQL从5.7开始默认开启SSL加密功能,进入MySQL控制台后输入status可以查看ssl的状态,出现下图表示在使用ssl: 另外,ssl加密需要密钥与证书,可以使用openssl手动生成或使用mysql_ssl_rsa_setup自动生成,这里使用了mysql_ssl_rsa_setup. 下面从安装开始. 2 安装(可选) 系统CentOS,直接使用yum安装(编译安装可以看这里),先用list查看一下: 这里的版本是8.0.17,不算太旧,就不去官网下载了,直接insta

Vsftpd支持SSL加密传输

ftp传输数据是明文,弄个抓包软件就可以通过数据包来分析到账号和密码,为了搭建一个安全性比较高ftp,可以结合SSL来解决问题 SSL(Secure Socket Layer)工作于传输层和应用程序之间.作为一个中间层,应用程序只要采用SSL提供的一套SSL套接字API来替换标准的Socket套接字,就可以把程序转换为SSL化的安全网络程序,在传输过程中将由SSL协议实现数据机密性和完整性的保证.SSL取得大规模成功后,IETF将SSL作了标准化,并将其称为TLS(Transport Layer

weblogic-配置SSl加密

写在前面:weblogic配置ssl加密,使用JDK提供的命令工具生成公钥和私钥,关于一些密钥知识,我也没弄清楚,后续学习了之后将补充完善这些知识信息. 1.weblogic的ssl配置准备 1)生成identity.jks密钥库 [email protected]:~/domains/mcpinterf_domain>keytool -genkey -aliaspicckey -keyalgRSA -keysize1024 -keypass111111 -keystoreidentity.jk

驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

由于项目中必须得用JDK6来作为Java环境,于是连接SQLServer时出现了com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接.错误:"Java.lang.RuntimeException: Could not generate DH keypair".这样的错误. 这个在JDK7中是修复了的,所以如果项目允许的话就换成JDK7吧,但有些只能用JDK6

nginx配置ssl加密(单双向认证、部分https)

默认nginx是没有安装ssl模块的,需要编译安装nginx时加入--with-http_ssl_module选项. 关于SSL/TLS原理请参考这里,如果你只是想测试或者自签发ssl证书,参考 这里 . 提示:nignx到后端服务器由于一般是内网,所以不加密. 1. 全站SSL 全站做ssl是最常见的一个使用场景,默认端口443,而且一般是单向认证. server { listen 443; server_name example.com; root /apps/www; index inde

利用Fiddler和Wireshark解密SSL加密流量

原文地址:http://kelvinh.github.io/blog/2014/01/12/decrypt-ssl-using-fiddler-and-wireshark/ Fiddler是一个著名的调试代理工具,它不仅能解析HTTP,而且还能解析加密的HTTPS流量.Wireshark则是一个非常强大的网络包监控以及协议分析工具. 在本文中,只考虑使用SSL来加密HTTP,所以并不严格区分SSL和HTTPS,虽然从广义上来讲,将二者混为一谈是非常不合理的 . 看到这里,大多数人都会很困惑:Fi

SSL加密

SSL利用数据加密.身份验证和消息完整性验证机制,为基于TCP等可靠连接的应用层协议提供安全性保证 SSL协议实现的安全机制包括: l              数据传输的机密性:利用对称密钥算法对传输的数据进行加密. l              身份验证机制:基于证书利用数字签名方法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的. l              消息完整性验证:消息传输过程中使用MAC算法来检验消息的完整性 加密通道,是指发送方在发送数据前,使用加密算法和加密密钥