用openSSL创建证书
OpenSSL功能远胜于KeyTool,可用于根证书,服务器证书和客户证书的管理下面给出如何用OpenSSL创建自己签名的证书,这个证书可以做为SSL服务器的证书。
Git在安装时,会自动安装 OpeenSSL软件包。通过执行 Git下面的 Bash 命令
在命令行窗口中输入 openssl命令可以进行 Openssl操作界面:
openssl 命令
创建私钥
下面命令会生成 2048位的 RSA密钥对,并且将它存放在 westwood.key文件中。——-用户的私钥,要保存好,一般要放在服务器上的某个位置
OpenSSL> genrsa -out westwood.key 2048
Generating RSA private key, 2048 bit long modulus
......+++
......+++
使用默认的RSA会把密钥输出到stdout
OpenSSL> genrsa
Generating RSA private key, 2048 bit long modulus
........................................................................+++
................................................................................
e is 65537 (0x10001)
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA1kzNqLnwhw/LqorPKuqx9exUh5gjmlt6jx/NCBVq2POwcn8H
NlcMhwEb6jiyrtmKj/oKieCKI/brtGyQqrI4Qik2/po1j1re7CZop0yL7rNoD/Il
0xC11pVhr2kdX3kMELOkd07FrmXHcxdRs8hNBvbyLe141d4CWqDaxTLLj4n/Dvhb
49rfOPBWmGtp8cWnfbwR7ZfEgriL/6fKjaTKNpcWhmJDBbHswaz3TynU1A1gn4Qm
be59k9eM/tPL7x3WDkLA8zpfCVv0rlj663IKIWYg72D/vkP/IfuzaIgmfDsHTpCA
IJvd+oONyPYhzihZjvVWKFGhjpkxlYWrEJKjlQIDAQABAoIBAAxtzevARQQAVYah
oFxT2lhyCYEHwODd92C/rmuOmnDUyWIKngd3ywE1fkH6YdqkQVYSYXQXsstdMdR4
C3fq+DpWG5tupDaZRZ6ap600UlVY0GtEVw9Dw9gbN9wtk4eLBLkfQiWtSufPfV7e
dl2f+1+xCODDCiQVSTuqYqXXSVkcw4vWdsxmwwB3SQPacrymIuyM8NQljNhA4Top
9Dxzrt+ozplVXviWjwhhDKgoCl8g9allJ3rvCs8dAE8jFyO9s0szSmbRp/mqDQMu
Ksp8v9ZGmN35Qk45sa9SE/rN3Jmj04mZr3b6zRclGEE39gxLPsrINr52wSTWBBPQ
q07oz4ECgYEA/ol1OP0ktUTAhgueqXQp5AYP4/p9fgGy5JI/C8tUm7fW/x87fWA3
ME6rRiyXAknLzEb3vCZW3t6V91kFfpurgGoWWSof9b4BQZmSJOQTfyzGY0xfn4SJ
cRM24YniSRJaJvQVFoa6Ig1h8/kJxTiUkltpoApNq1At8cLAxBJPEbUCgYEA14gj
Y11pwtMZJwTa2xZvivs3tGAvbJIDVOt6OrltqMfqKw9UAt72FK7O+XSxxKeICtv2
TIE1kxz9MfWW69BCG+2uWgnkAXw/x/G+A9m8iuLy6MUkyJYiR/HS8XcSvmYCveiT
uMK+6LfYKWH+DpMzQj/NnL9r6RIXZ01dTwLV9mECgYEAtzWxjmeHOIJYISPT/ByE
2oASiAIQudX3MdaiUpb0O3FD6zZL156dmsPFPCl0OE1tx4d9YYwnExwbzYHiFpNu
CmxR0bQkdPliZhlnu+3+qpdL5MVgPq1jUGSIKCbbHcV75nXhh+lJqKEBVF54zeA/
8GijynIgHaMErvODVJ3pE9ECgYBiBRL7BKetp+2fdjDGRKzTyy5pRPksajdDrpf3
Dw+VG94eWSk+6QGHJH0SrASQyBQxxBl+b6Da1+s6hlNtyVfXdb++SRM9rbEgEIv3
GlYJ3+7S952j78uFZrAlip6moqQKlDRiaYcDNWEEaQFuxXkhXvz2lYPRCp5EJ8YQ
wdxm4QKBgQCKo5GnqIhzijmlGRNJx5uBQf6od+juELGf8ecMI74CewHUxw4D4Ce3
cIfRcuTgQLJdLo8JmWyXqW5pdVeqvYlQMfweSx9aoINB4LzEUo7NLA/s6Q2qaSZR
GN/rzERw39wDrIObkC+/QbgUo1rys3MBW9KH1v9VDPuR5pQLLgJReg==
其他可用的命令可以查看帮助文档这里就不一一列出
创建证书请求
下面命令使用 westwood.key 密钥文件(刚刚创建的)生成一个新的证书请求文件 westwood.key。在创建过程中需要输入一些其它参数,这些参数在下面给出
OpenSSL> req -new -out westwood.csr -key westwood.key
You are about to be asked to enter information that will be incorporated
into 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 blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:cn
State or Province Name (full name) [Some-State]:guangdong
Locality Name (eg, city) []:guangzhou
Organization Name (eg, company) [Internet Widgits Pty Ltd]:www.gdut.edu.cn
Organizational Unit Name (eg, section) []:westwood
Common Name (e.g. server FQDN or YOUR name) []:localhost
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:MentalOmega
这时文件目录下会产生一个csr文件———证书请求文件
生成自签名证书
下面命令用证书请求文件westwood.csr,通过westwood.key签名后生成有效其10年的证书westwood.crt
OpenSSL> x509 -req -in westwood.csr -out westwood.crt -signkey westwood.key -days 3650
Signature ok
subject=/C=cn/ST=guangdong/L=guangzhou/O=www.gdut.edu.cn/OU=westwood/CN=localhost/[email protected]
Getting Private key
生成结果
westwood.key ——-用户的私钥,要保存好,一般要放在服务器上的某个位置
westwood.csr ———证书请求文件,
westwood.crt ———生成的X509证书,供客户端下载使用
Tomcat启用HTTPS协议配置过程
概念简介
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。
HTTP 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。
HTTPS和HTTP的区别
一、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
二、HTTPS 协议需要到 CA 申请证书,一般免费证书很少,需要交费。
三、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
四、HTTP 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。
证书的使用
使用OpenSSL生成的数字证书和私钥,如需要在Java或Tomcat环境下使用,需要先装其转换成PKCS#12编码格式的密钥库,才能使用keytool工具进行相应的管理。生成证书以后,就可以将其放到tomcat7/conf的目录下(建议),如果要把这个证书配置到Tomcat下,就不能像keytool生成的证书那样进行配置,而是要如下在tomcat的conf目录下对server.xml目录进行如下配置
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
SSLEnabled="true"
SSLCertificateFile="${catalina.base}\conf\westwood\westwood.crt"
SSLCertificateKeyFile="${catalina.base}\conf\westwood\westwood.key"
SSLPassword="123456"/>
然后启动服务器能在输出信息观察到8443端口已经被打开
然后在浏览器中输入
https://localhost:8443
会发现网址能被访问到,但是提示证书错误
这是因为这个证书还没有在CA认证过,所以被浏览器认为不安全,点击继续访问
最终能够看到,https已经在tomcat上配置好了。
参考的一些博客
http://daoyongyu.iteye.com/blog/2023133
http://szlxh002.iteye.com/blog/2277307