HTTPS_SSL配置的步骤以及原理说明
1. 说在前⾯
1.单向认证,就是传输的数据加密过了,但是不会校验客户端的来源
2.双向认证,如果客户端浏览器没有导⼊客户端证书,是访问不了web系统的,不到地址,想要⽤系统的⼈没有证书就访问不了系统
HTTPS概念
2. HTTPS概念
1)简介
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为⽬标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加⼊SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。这个系统的最初研发由⽹景公司进⾏,提供了⾝份验证与加密通讯⽅法,现在它被⼴泛⽤于万维⽹上安全敏感的通讯,例如交易⽀付⽅⾯。
免费ssl证书永久生成2)HTTPS和HTTP的区别
a. https协议需要到ca申请证书,⼀般免费证书很少,需要交费。
b. http是超⽂本传输协议,信息是明⽂传输;https 则是具有安全性的ssl加密传输协议。
c. http和https使⽤的是完全不同的连接⽅式,⽤的默认端⼝也不⼀样,前者是80,后者是443。
d. http的连接很简单,是⽆状态的;HTTPS协议是由SSL+HTTP协议构建的可进⾏加密传输、⾝份认证的⽹络协议,⽐http协议安
全。
3)HTTPS的作⽤
它的主要作⽤可以分为两种:⼀种是建⽴⼀个信息安全通道,来保证数据传输的安全;另⼀种就是确认⽹站的真实性。
a.⼀般意义上的https,就是服务器有⼀个证书。主要⽬的是保证服务器就是他声称的服务器,这个跟第⼀点⼀样;服务端和客户端之间的所有通讯,都是加密的。
b. 具体讲,是客户端产⽣⼀个对称的密钥,通过服务器的证书来交换密钥,即⼀般意义上的握⼿过程。
c. 接下来所有的信息往来就都是加密的。第三⽅即使截获,也没有任何意义,因为他没有密钥,当然篡改也就没有什么意义了。
d.少许对客户端有要求的情况下,会要求客户端也必须有⼀个证书。
这⾥客户端证书,其实就类似表⽰个⼈信息的时候,除了⽤户名/密码,还有⼀个CA 认证过的⾝份。因为个⼈证书⼀般来说是别⼈⽆法模拟的,所有这样能够更深的确认⾃⼰的⾝份。⽬前少数个⼈银⾏的专业版是这种做法,具体证书可能是拿U盘(即U盾)作为⼀个备份的载体。
3. SSL简介
1)简介
SSL (Secure Socket Layer)为Netscape所研发,⽤以保障在Internet上数据传输之安全,利⽤数据加密(Encryption)技术,可确保数据在⽹络上之传输过程中不会被截取及窃听。它已被⼴泛地⽤于Web浏览器与服务器之间的⾝份认证和加密数据传输。SSL协议位于TCP/IP协议与各种应⽤层协议之间,为数据通讯提供安全⽀持。
2)SSL提供的服务
a.认证⽤户和服务器,确保数据发送到正确的客户机和服务器
b.加密数据以防⽌数据中途被窃取
c.维护数据的完整性,确保数据在传输过程中不被改变。
3) SSL协议的握⼿过程
SSL 协议既⽤到了公钥加密技术⼜⽤到了对称加密技术,对称加密技术虽然⽐公钥加密技术的速度快,可是公钥加密技术提供了更好的⾝份认证技术。SSL 的握⼿协议⾮常有效的让客户和服务器之间完成相互之间的⾝份认证,其主要过程如下:
①客户端的浏览器向服务器传送客户端SSL协议的版本号,加密算法的种类,产⽣的随机数,以及其他服务器和客户端之间通讯
所需要的各种信息。
②服务器向客户端传送SSL协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送⾃⼰的证
书。
③客户利⽤服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发⾏服务器证书的CA 是否可靠,发
⾏者证书的公钥能否正确解开服务器证书的“发⾏者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进⾏第四步。
④⽤户端随机产⽣⼀个⽤于后⾯通讯的“对称密码”,然后⽤服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其
加密,然后传给服务器。
⑤服务器⽤私钥解密“对称密码”(此处的公钥和私钥是相互关联的,公钥加密的数据只能⽤私钥解密,私钥只在服务器端保留。详
细请参看: /wiki/RSA%E7%AE%97%E6%B3%95),然后⽤其作为服务器和客户端的“通话密码”加解密通讯。
同时在SSL 通讯过程中还要完成数据通讯的完整性,防⽌数据通讯中的任何变化。
⑥客户端向服务器端发出信息,指明后⾯的数据通讯将使⽤的步骤⑤中的主密码为对称密钥,同时通知服务器客户端的握⼿过程结
束。
⑦服务器向客户端发出信息,指明后⾯的数据通讯将使⽤的步骤⑤中的主密码为对称密钥,同时通知客户端服务器端的握⼿过程结
束。
⑧SSL 的握⼿部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使⽤相同的对称密钥进⾏数据通讯,同时进⾏通讯完
整性的检验。
4. HTTPS_SSL配置的步骤:
服务器端单向认证:
第⼀步:进⼊jdk的安装⽂件路径下⾯的bin⽬录;
第⼆步:在bin⽬录下输⼊以下命令
keytool -genkey -v -alias mykey -keyalg RSA -validity 3650 -keystore c:\sdust.keystore
-dname "CN=你的ip,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass 123456 -keypass 123456
说明:
keytool 是JDK提供的证书⽣成⼯具,所有参数的⽤法参见keytool –help
-genkey 创建新证书
-v详细信息
-
alias以”mykey”作为该证书的别名。这⾥可以根据需要修改
-keyalgRSA 指定算法
-keysize 指定算法加密后密钥长度
-keystorec:\sdust.keystore保存路径及⽂件名
-validity3650证书有效期,单位为天
CN=你的ip,OU=cn,O=cn,L=cn,ST=cn,c=cn 基本信息的配置
CN=你的ip 这个配置务必注意
-storepass 123456789 -keypass 123456789 密码设置
第三步:⽣成的⽂件如下图所⽰
第四步:配置tomcat的l⽂件[1]redirectPort端⼝号改为:443
<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="443" useBodyEncodingForURI="true"/>
[2]SSL HTTP/1.1 Connector定义的地⽅,修改端⼝号为:443
<Connector port="443" protocol="http11.Http11Protocol"
minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="C:/sdust.keystore" keystorePass="123456"
clientAuth="false" sslProtocol="TLS" />
属性说明:clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证keystoreFile:服务器证书⽂件路径keystorePass:服务器证书密码truststoreFile:⽤来验证客户端证书的根证书,此例中就
是服务器证书truststorePass:根证书密码
[3] AJP 1.3 Connector定义的地⽅,修改redirectPort为443
<Connector port="8009" protocol="AJP/1.3" redirectPort="443"/>
第五步: 重新启动Tomcat就可以了。
附加内容:若要使得应⽤只能通过https的⽅式访问,在该项⽬的l⽂件中加⼊如下代码:
<login-config>
<!-- Authorization setting for SSL -->
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<!-- Authorization setting for SSL -->
<web-resource-collection>
<web-resource-name>SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!--
Require HTTPS for everything except /img (favicon) and /css.
-
->
<security-constraint>
<web-resource-collection>
<web-resource-name>HTTPSOrHTTP</web-resource-name>
<url-pattern>*.ico</url-pattern>
<url-pattern>/img/*</url-pattern>
<url-pattern>/css/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>测试:在浏览器中输⼊:localhost:8443/,会弹出选择客户端证书界⾯,点击“确定”,会进⼊tomcat主页,地址栏后会有“锁”图标,表⽰本次会话已经通过HTTPS双向验证,接下来的会话过程中所传输的信息都已经过SSL信息加密。
可能存在的问题:
Eclipse中启动tomcat7.0,本地tomcat配置⽂件被eclipse恢复。
问题是这样的,在eclipse的servers配置项⾥,将tomcat的启动配置为了use tomcat location,但是每次在eclipse⾥publish项⽬都会把本地G:\tomcate7.0\apache-tomcat-7.0.29\conf下的配置⽂件(如:l添加了⽤户等信息)给重置,也就是⾥⾯添加的内容被清空了,回复到原来的样⼦:
问题解决⽅案:
你eclipse⼯程列表中应该还有个 Servers ⼯程,下⾯会有Tomcat7的配置⽂件,你把⾥⾯的对应配置⽂件改了。每次是⽤这个⽂件来覆盖,tomcat下⾯的⽂件的。
特定的⽬录实现https访问
解决⽅案:
在l⽂件中配置相应的路径
<security-constraint>
<!-- Authorization setting for SSL -->
<web-resource-collection>
<web-resource-name>SSL</web-resource-name>
<url-pattern>/login.html</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
jingyan.baidu/article/e4d08ffdb61f040fd3f60d48.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论