基于openssl的安全web服务器开发
- 格式:doc
- 大小:71.50 KB
- 文档页数:65
第11卷第1期沙洲职业工学院学报V ol. 11, No.1 2008年3月 Journal of Shazhou Professional Institute of Technology Mar. , 2008 利用OpenSSL实现IIS服务器安全通信汤建龙,陆国浩(沙洲职业工学院,江苏张家港 215600)摘要:简述了基于SSL的信息安全通道的原理及应用,介绍了利用OpenSSL软件包在windows 2000 server上IIS服务器搭建一条基于SSL的信息安全通道的过程,其中包括对CA服务的配置,WEB服务器端证书的申请、安装和配置,以及客户端和服务端SSL的通信过程。
关键词:OpenSSL;IIS;证书中图分类号:TP39 文献标识码:A 文章编号:1009-8429(2008)01-0012-05Realizing the Secure Communication on the IIS server with the OpenSSLTANG Jian-long,LU Guo-hao( Shazhou Professional Institute of Technology, Zhangjiagang 215600, China )Abstract: This paper summarizes the principle and the application of SSL-based information security channel, introduces the process for the SSL-based information security channel with the Open SSL software package on the Windows 2000 server and the IIS server, including the CA service configuration, the application for, the installation as well as the disposition of the WEB server certificate, and the SSL course of communications between the client end and the server end.Key words: OpenSSL; IIS; Certificate0 引言随着计算机网络技术的发展,互连网成为人们日常生活中获取信息的主要方式之一。
Openssl软件部署过程与介绍OpenSSLOpenSSL软件介绍Netscape⽹景公司⽣产了最初的浏览器,但为了提⾼浏览器访问页⾯的安全性,对TCP/IP模型进⾏了⼀定改进,在传输层与应⽤层之间,创建了⼀个3.5层的概念,称为SSL((Secure Sockets Layer 安全套接层))层,SSL不是⼀个软件,只是⼀个库,让应⽤层将数据传输到传输层前,调⽤了ssl层的功能对数据进⾏了加密,⽬前⽐较流⾏的版本是(SSLv2 v3),但是SSL是netscape公司进⾏定义的,不够开放性,因此为了使加密功能更加开放,TSL(传输层安全协议)协议就出现了,⽬前⽐较流⾏的版本是(TSLv1==ssl v3),TSL更像是传输层上实现的数据加密。
SSL数据通讯实现原理由于借助SSL实现安全数据通讯的⽅式⽐较多,本⽂只以最基本的HTTP协议为例,了解⼀下SSL数据安全通讯的过程。
具体实现过程说明如下:1. http是基于tcp协议进⾏建⽴的,因此在建⽴tcp连接之前要先进⾏tcp的三次握⼿过程2. 三次握⼿之后,不马上进⾏数据的传输,⽽是进⾏SSL的建⽴3. 客户端⾸先向服务器端发起数据传输请求,但服务端不会回复http数据包,⽽是与客户端⼀来⼀回协商⽣成/建⽴SSL会话,确认是选⽤SSLv2还是SSLv3,TSL协议,并且还要协商加密算法。
4. 服务端与客户端的加密协议协商好后,服务端会将⾃⼰的证书发送给客户端5. 客户端在获取到证书后,先进⾏对证书的验证,确认是否是信任机构颁发的,并且验证证书是否是完整的,以及确认证书是没有注销的,验证完毕后,获得的证书中的公钥就可以进⾏使⽤了6. 证书合法性验证完毕后,客户端会建⽴⽣成⼀个会话密钥7. 客户端选择随机数⽣成⼀个随机密钥,并且利⽤服务端的公钥对随机密钥进⾏加密,发给服务端8. 服务器端收到公钥加密的数据,就可以利⽤⾃⼰的私钥进⾏解密,获得对称密钥,就可以对传输数据进⾏加密了OpenSSL软件概念说明OpenSSL软件组成openssl是由三部分组成:1.libcrpto:通⽤加密库2.libssl:TSL/SSL功能的实现,基于会话的,实现了⾝份认证,数据机密性和会话完整性的TSL/SSL库3.openssl:提供的命令⾏⼯具,多⽤途命令⼯具,模拟实现私有证书颁发机构;命令⾏⼯具是通过多种⼦命令实现openssl的相应功能OpenSSL软件详细说明01. 获取OpenSSL软件的版本信息:openssl version <- 查看openssl版本信息02.获取OpenSSL配置⽂件信息:/etc/pki/tls/f <- openssl配置⽂件,主要⽤于配置成私有ca时进⾏使⽤03.获取OpenSSL命令详细参数:[root@web01 ~]# openssl ?openssl:Error: '?' is an invalid command.#标准命令Standard commandsasn1parse ca ciphers cmscrl crl2pkcs7 dgst dhdhparam dsa dsaparam ececparam enc engine errstrgendh gendsa genpkey genrsanseq ocsp passwd pkcs12pkcs7 pkcs8 pkey pkeyparampkeyutl prime rand reqrsa rsautl s_client s_servers_time sess_id smime speedspkac ts verify versionx509Message Digest commands (see the `dgst' command for more details)#单向加密命令md2 md4 md5 rmd160sha sha1Cipher commands (see the `enc' command for more details)#加密命令aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecbaes-256-cbc aes-256-ecb base64 bfbf-cbc bf-cfb bf-ecb bf-ofbcamellia-128-cbc camellia-128-ecb camellia-192-cbc camellia-192-ecbcamellia-256-cbc camellia-256-ecb cast cast-cbccast5-cbc cast5-cfb cast5-ecb cast5-ofbdes des-cbc des-cfb des-ecbdes-ede des-ede-cbc des-ede-cfb des-ede-ofbdes-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofbdes-ofb des3 desx ideaidea-cbc idea-cfb idea-ecb idea-ofbrc2 rc2-40-cbc rc2-64-cbc rc2-cbcrc2-cfb rc2-ecb rc2-ofb rc4rc4-40 seed seed-cbc seed-cfbseed-ecb seed-ofb zlib[root@web01 ~]#openssl speed <- 测试当前主机对所有openssl⽀持的加密算法的加密速度进⾏测试显⽰,同时也对服务器性能做⼀个测试# openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e] [-d][-a/-base64] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt][-salt] [-nosalt] [-z] [-md] [-p] [-P] [-bufsize number] [-nopad] [-debug][-none] [-engine id]ciphername <- 指定加密的算法[-in filename] <- 指定要加密的⽂件[-out filename] <- 指定加密后输出的⽂件[-e] [-d] <- e是加密⽂件,d是解密⽂件,不指定默认就是加密的[-a] <- 基于base64位进⾏编码,可选参数#举例说明,加密⼀个⽂件# openssl enc -des3 -salt -a -in inittab -out initab.des3 <- 输⼊密码后即加密成功# openssl enc -des3 -d -salt -a -in initab.des3 -out inittab <- 输⼊密钥后即解密成功说明:其中命令中的salt参数,主要⽤于避免密码加密后,对密钥串的反推#输出⼀个⽂件的特征码⽅式md5sum inittabsha1sum inittabopenssl dgst -sha1 inittab <- 利⽤openssl⽣成⽂件特征码dgst---表⽰指定使⽤信息摘要命令-sha1---表⽰指定摘要命令选⽤sha1算法#⽣成和⽤户⼀样的密码串openssl passwd -1 <- 采⽤md5加密⽤户密码串#⽣成伪随机数⽅法openssl rand -base64 45 <- 给出⼀个任意的数字,就会⽣成任意的随机数利⽤OpenSSL软件实现HTTPS访问过程第⼀步:创建⼀个私钥⽂件(运维⼈员需要会)[root@web01 serv_key]# openssl genrsa 2048 > server.key --->创建私钥信息,并指定私钥长度为2048,将⽣成的私钥信息保存在⼀个⽂件中Generating RSA private key, 2048 bit long modulus...............................................................................................................................................+++...................+++e is 65537 (0x10001)[root@web01 serv_key]# (umask 077;openssl genrsa -out server.key 2048) -->将私钥信息直接进⾏保存,加密长度⼀定⼈放在输出⽂件后台,同时临时修改umask,将⽂件的权限变为600 Generating RSA private key, 2048 bit long modulus.....+++........................+++e is 65537 (0x10001)[root@web01 serv_key]# lltotal 4-rw-r--r-- 1 root root 1679 Mar 1 10:49 server.key[root@web01 serv_key]#第⼆步:⽣成证书⽂件信息1.⽣成⾃签发证书(运维⼈员可以⾃⾏操作)[root@web01 serv_key]# openssl req -new -x509 -key server.key -out server.crt -daysreq ------> ⽤于请求创建⼀个证书⽂件new ------>表⽰创建的是新的证书x509 ------>表⽰定义证书的格式为标准格式key ------>表⽰调⽤的私钥⽂件信息out ------>表⽰输出证书⽂件信息days ------->表⽰证书的有效期365You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [XX]:cn <---- 定义⽣成证书的国家State or Province Name (full name) []:gd <---- 定义⽣成证书的省份Locality Name (eg, city) [Default City]:gz <---- 定义⽣成证书的城市Organization Name (eg, company) [Default Company Ltd]:baidu <---- 定义⽣成证书的组织Organizational Unit Name (eg, section) []:it <- 定义⽣成证书的职能部门Common Name (eg, your name or your server's hostname) []:web01 <---- 定义主机服务器名称说明:此输出信息⾮常重要,客户端在获取证书前,会利⽤主机名与相应服务器之间建⽴连接,然后获得证书Email Address []:liuyang97@2.向证书颁发机构申请证书(ca证书机械完成)1.⽣成请求的证书⽂件[root@web01 serv_key]# openssl req -new -key server.key -out server_new.csrYou are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [XX]:cnState or Province Name (full name) []:gdLocality Name (eg, city) [Default City]:gzOrganization Name (eg, company) [Default Company Ltd]:baiduOrganizational Unit Name (eg, section) []:itCommon Name (eg, your name or your server's hostname) []:web01Email Address []:liuyang97@Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:liuyang1 <-- 设置证书的密码信息An optional company name []:liuyang1 <-- 确认证书的密码信息[root@web01 serv_key]# lltotal 12-rw-r--r-- 1 root root 1367 Mar 1 10:59 server.crt-rw------- 1 root root 1675 Mar 1 10:52 server.key-rw-r--r-- 1 root root 1094 Mar 1 11:07 server_new.csr3.将⽣成的证书⽂件发给证书机构,证书机构会返还⼀个公钥回来第三步:配置Nginx负载均衡服务器配置,加载私钥和证书信息[root@lb01 server_key]# cat /application/nginx/conf/nginx.confworker_processes 1;events {worker_connections 1024;}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;upstream oldboy {server 10.0.0.7:80;server 10.0.0.8:80;server 10.0.0.9:80;}#永久定向server {listen 80;server_name ;rewrite ^(.*)$ https://$host$1 permanent;}#ssl认证server {listen 10.0.0.3:443 ssl;server_name ;ssl_certificate /server/server_key/server.crt;ssl_certificate_key /server/server_key/server.key;root html;index index.html index.htm;location / {proxy_pass http://oldboy;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr;}}server {listen 10.0.0.4:80;server_name ;root html;index index.html index.htm;location / {proxy_pass http://oldboy;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr;}}}[root@lb01 server_key]#第四步:测试访问访问会⾃动跳转访问bbs正常访问。
编号:毕业论文题目浅谈计算机网络安全漏洞及防范措施——OpenSSL心脏出血漏洞分析年月日目录序言 (1)一、“心脏出血”漏洞 (1)(一)“心脏出血”漏洞的危害 (1)1.私钥 (1)2.用户密码 (2)3.服务器配置 (3)4.服务器瘫痪 (3)(二)“心脏出血”漏洞分析 (4)1.漏洞存在的文件 (4)2.漏洞测试 (5)3.漏洞检测 (5)4.服务器瘫痪 (4)(三)“心脏出血”漏洞的防范与修复 (6)二、计算机网络安全漏洞的防范对策 (8)(一)利用防火墙防范 (8)(二)漏洞扫描 (9)(三)病毒防范 (9)(四)计算机安全设置 (10)1.入侵检测系统 (10)2.加密技术 (10)结语 (10)参考文献 (12)浅谈计算机网络安全漏洞及防范措施——OpenSSL心脏出血漏洞分析摘要:在网络技术迅速发展的今天,全世界的计算机都通过Internet联到了一起。
信息安全的内涵发生了根本的变化,它不仅从一般性的防卫变成了一种非常普通的防范,而且还从一种专门的领域变成了无处不在。
近来来,身边不断发生的各种计算机恶意侵害,严重威胁到了个人,企业甚至是国家的安全。
攻击者利用漏洞对目标计算机的完全控制,窃取机密信息,甚至令目标服务器瘫痪。
2014年4月7日openssL发布了安全公告,在OpensSLl.0.1版本中存在严重漏洞。
openssLHea而leed模块存在一个BuG,问题存在于ssFdibothc文件中的心跳部分,当攻击者构造一个特殊的数据包,满足用户心跳包中无法提供足够多的数据会导致memCp,函数把SSLv3记录之后的数据直接输出,该漏洞导致攻击者可以远程读取存在漏洞版本的oPenssL服务器内存中多达64K的数据。
因此,计算机安全成为当今信息技术领域的重要研究课题。
关键词:“心脏出血”;OpenSSL;网络安全;措施Discussion on computer network security vulnerability and preventivemeasuresAbstract:With the rapid development of network technology today, the world's computers are linked together by Internet. Radically changed the meaning of information security, it not only from the general's defense has become a very ordinary precautions, but also from a specialized field has become ubiquitous. In recent years, a variety of computer side ongoing malicious infringement, a serious threat to the individual, enterprise and even national security. Complete control of attackers exploit vulnerabilities on the target computer, steal confidential information, even to the target server paralysis.In April 7, 2014, openssL issued a safety notice, there are serious flaws in the OpensSLl.0.1 version. OpenssLHea and LEED module in a BuG, the heartbeat is part of the problem that exists in the ssFdibothc file, when the attacker constructs a special packets that meet user heartbeat packet cannot provide enough data can lead to memCp,function after SSLv3 record data directly output, the vulnerability leads to an attacker can up to 64K the remote data reading loopholes version of oPenssL server memory. Therefore, computer security has become an important research subject in modern information technology field.Keywords:“Heartbleed”;OpenSSL;Networksecurity;Measures序言“心脏出血”漏洞,是安全套接层(Secure,Sockets,Layer,SSL)心跳机制实现代码中的缺陷,利用这一缺陷可以发动黑客攻击,获取服务器内存信息。
监测系统和仪器生命科学、制药与生物技术应用监测与参数分布:实验室、洁净室和仓库viewLinc CMS 特点和优点▪可验证软件和数据记录仪符合美国联邦法规第 21 章第 11 节和附录 11 的规定▪方便安装和验证,可选 IQOQ 协议▪通过以太网、PoE 、Wi-Fi 或 VaiNet 无线技术轻松建立网络连接▪基于 Web 的远程监控界面▪通过电子邮件、短信、电话、PC 显示器、信号塔和报警器发出警报通知▪安全的审核跟踪和可定制的报告▪viewLinc 经验证的监测数据可以通过维萨拉的 OPC UA 或 viewLinc API 与其他系统集成▪允许从支持 Modbus 的设备输入连续监测系统 (CMS)维萨拉 viewLinc CMS 设计用于 GxP 管控环境。
该系统将维萨拉的 viewLinc 企业服务器软件与维萨拉数据记录仪、智能探头、变送器和支持 Modbus 的第三方设备结合起来。
维萨拉提供可选的文档和服务,包括:IQOQ 协议、可帮助您根据 GAMP 指南实现系统的 GxP 文档包,以及针对选定区域的现场校准、安装和验证等服务。
验证/参数分布系统维萨拉参数分布系统是为苛刻的验证应用而设计的,它包括 vLog 软件和维萨拉的数据记录仪,用于下载、显示、分析和报告。
vLog 加密且可验证,可生成表格和图形化报告,这些报告可根据您的文档需要轻松定制。
验证/参数分布系统的特点和优点▪稳定可靠的硬件可减少传感器准确度漂移▪外形紧凑的数据记录仪易于放置,对操作的干扰较小▪易于使用的 vLog 软件提供可定制的详细报告▪提供全面的 IQ/OQ 协议▪三个访问控制安全级别:Windows 、域级别和本地帐户身份验证▪报告数据的安全状态符合联邦法规第 21 章第 11 节/附录 11 的规定▪审核跟踪确保记录所有系统操作*viewLinc 企业服务器包含 OpenSSL Project 开发的用于 OpenSSL Toolkit 的软件。
OpenSSL安全漏洞威胁升级电脑手机均可能被窃取隐私4月11日消息,互联网严重安全漏洞OpenSSL“心脏出血”的威胁仍在发酵。
金山毒霸安全中心研究发现,不仅网民访问https攻击网站会泄露个人隐私信息,而且使用包含OpenSSL代码库的一些电脑软件,甚至安卓APP、浏览器,都有可能面临隐私被窃取的风险。
金山毒霸安全专家指出,国外已有黑客将针对个人电脑、手机、平板设备的攻击代码公开,可能已在黑客圈大面积传播。
黑客利用OpenSSL“心脏出血”漏洞构造特殊网页,诱骗网民点击访问。
当用户电脑或移动电子设备使用了OpenSSL的软件,访问到上述攻击网页时,黑客就通过服务器发送恶意“心跳包”(定时发送的通讯包)给客户端,利用漏洞多次远程读取用户系统内存数据,盗取用户数字证书,帐号,密码,上网记录等重要信息。
OpenSSL Heartbleed(“心脏出血”)漏洞被业内称为2014年度最重大的安全漏洞之一,它不久前由安全公司Codenomicon和谷歌的工程师发现,漏洞编号CVE-2014-0160。
由于OpenSSL协议广泛应用于网银、在线支付、电子邮件、电商等重要网站,所以利用此漏洞的黑客只需坐在电脑前,即可实时获取约30%以https开头网址的用户登录账号密码。
据最新消息,该漏洞不仅影响了大量网站服务器,也存在于思科和Juniper的网络设备中。
思科已经列出了10余款被确认存在漏洞的产品,而另60余款产品可能受到影响,但调查仍在进行中。
除网络设备之外,一些手机系统也存在“心脏出血”漏洞。
谷歌近日发布公告证实安卓手机用户同样受到此漏洞的威胁。
谷歌称安卓系统的4.1.1版采用了有漏洞版本的OpenSSL协议库,用户同样面临隐私遭窃取的风险。
据安全圈人士透露,由于OpenSSL漏洞的出现,在近日的地下交易市场中,各种兜售非法数据的交易显得异常火爆。
目前,国内外众多网站和网络服务商正积极应对此次重大安全事件。
openssl做证书的方法-回复OpenSSL 是一个开源的软件包,可用于创建安全套接字层(SSL)和传输层安全性(TLS)协议的证书。
证书是用于身份验证和数据加密的数字文件。
下面将一步一步介绍OpenSSL 的使用方法来生成证书。
第一步:安装OpenSSL首先,您需要安装OpenSSL 软件包。
根据您的操作系统,可以在OpenSSL 官方网站(OpenSSL 在您的系统上可用。
第二步:生成私钥要生成证书,首先需要生成一个私钥。
私钥用于生成和验证证书,因此它必须严格保密。
您可以使用以下命令在命令行中生成私钥:openssl genpkey -algorithm RSA -out private.key此命令将使用RSA 算法生成一个私钥,并将其保存在private.key 文件中。
确保将文件保存在安全的位置,并为其设置适当的权限,以防止未经授权访问。
第三步:生成证书请求生成了私钥后,接下来需要生成证书请求。
证书请求包含您的公钥以及有关您身份的信息。
以下命令将生成证书请求:openssl req -new -key private.key -out certificate.csr在此命令中,-key 参数指定您的私钥文件,-out 参数指定将保存证书请求的文件名。
您将被要求输入与您身份相关的信息,如名称、单位、电子邮件地址等。
确保在输入这些信息时提供准确的数据。
第四步:自签名证书生成证书请求后,您可以使用OpenSSL 生成一个自签名证书。
自签名证书是由您自己颁发的,因此在一些特定情况下可能不被所有设备或应用程序接受。
但它在测试和开发环境中非常有用。
以下命令将生成自签名证书:openssl x509 -req -in certificate.csr -signkey private.key -out certificate.crt此命令使用您之前生成的私钥和证书请求来创建一个自签名证书。
最后的证书将保存在certificate.crt 文件中。
Apache2.2 openssl配置Https应用1、关于Apache网上有很多关于Apache配置Http,Https 的帖子,写的各式各样大同小异。
但说到都比较浅,至少我感觉没有说明白原理。
当然,这里我也只是针对我现在的理解来说一下Apache Https那些事。
通常我们开发的web项目都要部署在weblogic中间件上,然后为了网络安全,在停火区搭建web server用于请求转发。
最常用的web server之一就是Apache。
如果是金融领域的应用的话,基本上都是要配置Https的,以防敏感数据被窃取。
Apache有很多版本,有些版本只能配置Http的应用,要想配置Https的话,需要下载专门的Apache,我这里用的是:httpd-2.2.21-win32-x86-openssl-0.9.8r.msi,使用这个软件可以自制证书,可以配置Https。
(虽然是32位的,也可以安装在64位的windows上,我也没找到专门的64位软件)。
2、关于证书部署Https应用需要证书,可以自制也可以购买。
当然,如果你的应用是公司级的又是金融领域的,那基本上要购买了,比如天威诚信的证书。
因为自制证书可能被黑客替换,用户体验也不好每次浏览器都会提示不安全证书。
自制证书步骤:进入D:\Apache2.2\bin执行以下命令:#生成rsa私钥opensslgenrsa -des3 -out root.key#配置环境变量,制定openssl.cfg配置文件的路径setOPENSSL_CONF=C:\cert\OpenSSL-Win64\bin\openssl.cfg#生成CA的crt,用来签署下面的root.csr文件,有效期10年openssl req -new -x509 -key root.key -out ca.crt -days 3650#生成的csr文件交给CA签名后形成服务器自己的证书.重要:有一个common name可以写域名,如果为了https申请,这个必须和域名吻合,否则会引发浏览器报警openssl req -new -key root.key -out root.csr#输入key的密钥后,完成证书生成.-CA 选项指明用于被签名的csr证书,-CAkey选项指明用于签名的密钥,-CAserial指明序列号文件,而-CAcreateserial指明文件不存在时自动生成.#最后生成了私用密钥:root.key 和自己的SSL证书root.crtopenssl x509 -req -days 3650 -in root.csr -CA ca.crt -CAkey root.key -CAcreateserial -out root.crt#证书合并:cat root.key root.crt > root.pem #linuxcopy /b /y root.key+root.crt root.pem #windows#统一接入网关密码设置为:admin123C:\cert\OpenSSL-Win64\bin>openssl pkcs12-export -in root.pem -inkey root.key -out root.pfx3、配置Https背景:Weblogic10.3.6,Apache2.2 ,windows2008EnterpriseApache安装在D://Apache2.2,weblogic安装在Redhat6上。
基于OpenSSL的SM2与RSA自动切换算法的设计贾冀芳;张立新;廖明耀【摘要】为了SSL/TLS协议的安全性与性能能同时满足用户的需求,基于国家商用密码算法(国密算法)的安全性强于通用密码算法、性能弱于通用密码算法的现状,在OpenSSL基础上设计一种SM2与RSA自动切换的算法以满足在性能达标的前提下提高系统的安全性.SSL/TLS握手协议在性能满足需求的前提下,优先使用国密SM2算法,当每秒新建连接数达到一定峰值时,SM2的性能满足不了需求,则系统自动切换到RSA算法,满足更高每秒新建连接数的性能需求.该算法在OpenSSL的数据结构和函数上进行扩展,经过测试实现了在每秒新建SSL/TLS连接数达到一定数值时,SM2算法与RSA算法的自动切换.该算法在满足性能需求的前提下能有效提高系统的安全性.%Based on observation that security of national commercial cipher algorithms(national cipher algorithms)is stronger than general cipher algorithms, and the performance is weaker than general cipher algorithms, an automatic switching algorithm between SM2 and RSA based on OpenSSL is designed in order to improve system security under the premise of performance standards. SSL/TLS handshake protocol is given the priority to use SM2 algorithm, before new connections per second reaches a certain peak. When the new connection rate of SM2 can not meet the demand, the system automatically switches to the RSA algorithm to reach the higher rate. The algorithm is extended on the data structure and function of OpenSSL. The experimental results show that the SM2 algorithm and RSA algorithm can be switched automat-ically when the new SSL/TLS connection rate reaches a certain value. The algorithmcan effectively improve the system security under the premise of meeting the performance requirements.【期刊名称】《计算机工程与应用》【年(卷),期】2018(054)003【总页数】8页(P74-81)【关键词】SSL/TLS协议;SM2算法;RSA算法;自动切换算法;OpenSSL【作者】贾冀芳;张立新;廖明耀【作者单位】北京中电普华信息技术有限公司研发事业部,北京 100192;北京中电普华信息技术有限公司研发事业部,北京 100192;北京中电普华信息技术有限公司研发事业部,北京 100192【正文语种】中文【中图分类】TP301.61 引言我国政府高度重视密码算法国产化升级改造工作[1]。
Windows下Tomcat W eb服务器的SSL配置本文涉及:1.windows下的OpenSSL安装2.自己签发根证书3.用这个根证书来签发服务器证书4.服务器端证书导入5.TOMCAT服务器设置6.客户端根证书安装一、软件准备1)、jsdk1.5下载2)、apache-tomcat-5.5.27下载3)、openssl0.9.7c下载/downlinks/openssl-bin.php二、软件安装安装(解压)上面下载的软件,假设安装目录如下:jsdk: D:\jdk1.5.0_07tomcat: D:\ide\apache-tomcat-5.5.27openssl: D:\GnuWin32三、SSL配置1)、添加windows环境变量JA V A_HOME= D:\jdk1.5.0_072)、建目录D:\ca,用来存放生成的临时文件。
3)、新建文件D:\GnuWin32\bin\openssl.conf,内容如下:[ req ]default_bits = 1024default_keyfile = ca-key.pemdistinguished_name = req_distinguished_nameattributes = req_attributesprompt = nooutput_password = as12345[ req_distinguished_name ]C = CNST = BeijingL = XichengquO = OU = CN = Albert SongemailAddress = test@[ req_attributes ]challengePassword = as12345674)、执行cmd.exe,在命令行窗口执行如下操作:转到OpenSSL目录:>cd D:\GnuWin32\bin生成CA私钥:>openssl genrsa -out D:\ca\ca-key.pem 1024生成待签名证书:>openssl req -new -out D:\ca\ca-req.csr -key D:\ca\ca-key.pem -config openssl.conf用CA私钥进行自签名:>openssl x509 -req -in D:\ca\ca-req.csr -out D:\ca\ca-cert.pem -signkey D:\ca\ca-key.pem -days 365转到java bin目录:>cd D:\jdk1.5.0_07\bin生成server端证书:生成KeyPair,注意keyPass,storepass 要一样>keytool -genkey -alias blog_albertsong -validity 365 -keyalg RSA-keysize 1024 -keypass as.1234-storepass as.1234-dname "cn=localhost,ou=bis,o=bis,l=Beijing,st=Beijing,c=CN" -keystore D:\ca\albertsong.jks生成待签名证书:>keytool -certreq -alias blog_albertsong -sigalg MD5withRSA-file D:\ca\albertsong.csr -keypass as.1234 -keystore D:\ca\albertsong.jks -storepass as.1234转到OpenSSL目录:>cd D:\GnuWin32\bin用CA私钥进行签名:>openssl x509 -req -in D:\ca\albertsong.csr -out D:\ca\albertsong-cert.pem -CA D:\ca\ca-cert.pem -CAkey D:\ca\ca-key.pem -days 365 -set_serial 1转到java bin目录:>cd D:\jdk1.5.0_07\bin导入信任的CA根证书到Java的默认位置:>keytool -import -v -trustcacerts -storepass changeit -alias root_albertsong -file D:\ca\ca-cert.pem -keystore D:\jdk1.5.0_07\jre\lib\security\cacerts把CA签名后的server端证书导入keystore:提示时,输入as.1234>keytool -import -v -trustcacerts -storepass as.1234-alias blog_albertsong -file D:\ca\albertsong-cert.pem -keystore D:\ca\albertsong.jks查看server端证书密码分别是changeit , as.1234>keytool -list -keystore D:\jdk1.5.0_07\jre\lib\security\cacert>keytool -list -keystore D:\ca\albertsong.jks5)、修改server.xml使T omcat支持SSL在D:\ide\apache-tomcat-5.5.27\conf\server.xml找到<!-- Define a SSL HTTP/1.1 Connector on port 8443 --><!--<Connector port="8443" maxHttpHeaderSize="8192"maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" disableUploadTimeout="true"acceptCount="100" scheme="https" secure="true"clientAuth="false" sslProtocol="TLS" />-->改为:<!-- Define a SSL HTTP/1.1 Connector on port 8443 --><Connector port="8443" maxHttpHeaderSize="8192"maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" disableUploadTimeout="true"acceptCount="100" scheme="https" secure="true"clientAuth="false" sslProtocol="TLS"keystoreFile="D:\ide\apache-tomcat-5.5.27\conf\albertsong.jks"keystorePass="as.1234"/>6)、将D:\ca\albertsong.jks复制到D:\ide\apache-tomcat-5.5.27\conf下。
使用OpenSSL API 进行安全编程创建基本的安全连接和非安全连接Kenneth Ballard (kenneth.ballard@), 自由程序员简介:学习如何使用 OpenSSL ——用于安全通信的最著名的开放库——的API 有些强人所难,因为其文档并不完全。
您可以通过本文中的提示补充这方面的知识,并驾驭该 API。
在建立基本的连接之后,就可以查看如何使用 OpenSSL 的 BIO 库来建立安全连接和非安全连接。
与此同时,您还会学到一些关于错误检测的知识。
OpenSSL API 的文档有些含糊不清。
因为还没有多少关于 OpenSSL 使用的教程,所以对初学者来说,在应用程序中使用它可能会有一些困难。
那么怎样才能使用 OpenSSL 实现一个基本的安全连接呢?本教程将帮助您解决这个问题。
学习如何实现 OpenSSL 的困难部分在于其文档的不完全。
不完全的 API 文档通常会妨碍开发人员使用该 API,而这通常意味着它注定要失败。
但 OpenSSL 仍然很活跃,而且正逐渐变得强大。
这是为什么?OpenSSL 是用于安全通信的最著名的开放库。
在 google 中搜索“SSL library”得到的返回结果中,列表最上方就是 OpenSSL。
它诞生于 1998 年,源自 Eric Young 和 Tim Hudson 开发的 SSLeay 库。
其他 SSL 工具包包括遵循 GNU General Public License 发行的 GNU TLS,以及 Mozilla Network Security Services(NSS)(请参阅本文后面的参考资料,以获得其他信息)。
那么,是什么使得 OpenSSL 比 GNU TLS、Mozilla NSS 或其他所有的库都优越呢?许可是一方面因素(请参阅参考资料)。
此外,GNS TLS(迄今为止)只支持 TLS v1.0 和 SSL v3.0 协议,仅此而已。