https简介html
它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操做,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安全套接字层(SSL)做为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通讯。)SSL使用40 位关键字做为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,若是须要的话用户能够确认发送者是谁。java
也就是说它的主要做用能够分为两种:一种是创建一个信息安全通道,来保证数据传输的安全;另外一种就是确认网站的真实性。算法
1、https协议须要到ca申请证书,通常免费证书不多,须要交费。apache
2、http是超文本传输协议,信息是明文传输,https 则是具备安全性的ssl加密传输协议。浏览器
3、http和https使用的是彻底不一样的链接方式,用的端口也不同,前者是80,后者是443。tomcat
4、http的链接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。安全
为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程当中不会被截取及窃听。目前通常通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境。只要3.0版本以上之I.E.或Netscape浏览器便可支持SSL。服务器
当前版本为3.0。它已被普遍地用于Web浏览器与服务器之间的身份认证和加密数据传输。网络
SSL协议位于TCP/IP协议与各类应用层协议之间,为数据通信提供安全支持。SSL协议可分为两层:SSL记录协议(SSL Record Protocol):它创建在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol):它创建在SSL记录协议之上,用于在实际的数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥等。网站
链接分为两个阶段,即握手和数据传输阶段。
握手阶段对服务器进行认证并确立用于保护数据传输的加密密钥。必须在传输任何应用数据以前完成握手。一旦握手完成,数据就被分红一系列通过保护的记录进行传输。
1)认证用户和服务器,确保数据发送到正确的客户机和服务器
2)加密数据以防止数据中途被窃取
3)维护数据的完整性,确保数据在传输过程当中不被改变。
有两种基本的加解密算法类型:
1)对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等;
2)非对称加密:密钥成对出现(且根据公钥没法推知私钥,根据私钥也没法推知公钥),加密解密使用不一样密钥(公钥加密须要私钥解密,私钥加密须要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。
1)客户端产生的密钥只有客户端和服务器端能获得;
2)加密的数据只有客户端和服务器端才能获得明文;
3)客户端到服务端的通讯是安全的。
加密过程:
在https的通讯过程当中,组合使用了公用密钥方式加密和共享密钥方式加密这两种技术。公用密钥方式要比共享密钥方式慢得多,所以使用公用密钥来完成共享密钥的交换。公用密钥是从证书中得到的。拿到共享密钥以后,全部的内容之间的通讯都会使用共享密钥来进行加密和解密。公用密钥的做用就是为了安全的交换共享密钥,共享密钥是用来通讯内容的加密和解密。这样既确保了通讯之间的安全,也确保了加密和解密的效率。
export JAVA_HOME=/usr/java/jdk1.8.0_92
export JRE_HOME=$JAVA_HOME/jre
export TOMCAT_HOME=/var/apache-tomcat-7.0.63
export CATALINA_HOME=/var/apache-tomcat-7.0.63
export CATALINA_BASE=/var/apache-tomcat-7.0.63
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/bin/tools.jar:$JRE_HOME/lib
export CLASSPATH=:CLASSPATH:$CATALINA_HOME/common/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME:$TOMCAT_HOME/bin
第一步:使用keytool为Tomcat生成证书
[root@iZ25fe0s3erZ apache-tomcat-7.0.63]# keytool -alias tomcat -genkey -keyalg RSA -keysize 1024 -sigalg SHA1withRSA -validity 3650 -keystore /var/apache-tomca t-7.0.63/tomcat.keystore
Enter keystore password:
Re-enter new password:
What is your first and last name? 输入你服务器使用的域名
[Unknown]: 123.com
What is the name of your organizational unit? 输入组织名称
[Unknown]: cmm
What is the name of your organization? 输入单位名称
[Unknown]: cmm
What is the name of your City or Locality? 输入你所在的城市
[Unknown]: beijing
What is the name of your State or Province? 输入你所在的县
[Unknown]: beijing
What is the two-letter country code for this unit? 输入你所在国家的编码
[Unknown]: CN
Is CN=yingyangmeishi.chaomeiman.com, OU=chaomeiman, O=chaomeiman, L=beijing, ST= beijing, C=CN correct?
[no]: Y
Enter key password for <tomcat>
(RETURN if same as keystore password):
为浏览器生成证书,以便让服务器来验证它。
因为是双向SSL认证,服务器必需要信任客户端证书,所以,必须把客户端证书添加为服务器的信任认证。因为不能直接将PKCS12格式的证书库导入,咱们必须先把客户端证书导出为一个单独的CER文件,使用以下命令:
而后将该文件导入到服务器的证书库,添加为一个信任证书:
keytool -export -alias tomcat -keystore /var/apache-tomcat-7.0.63/tomcat2.keystore -file /var/apache-tomcat-7.0.63/tomcat.cer
让服务器信任服务端证书(同第三步)
list命令查看服务器的证书库,咱们能够看到两个输入,一个是服务器证书,一个是受信任的客户端证书:
keytool -list /var/apache-tomcat-7.0.63/tomcat.keystore
<Connector port="8443"
protocal="HTTP/1.1"
SSLEnabled="true"
maxThread="150"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="/var/apache-tomcat-7.0.63/tomcat.keystore"
keystorePass="cmm******"/>