解决方案:
在对工程升级访问协议的时候,其实可以通过代理或者对tomcat进行配置,我是通过tomcat进行设置,通过jdk 生成证书,步骤如下:
使用keytool命令生成证书tomcat.keystore
keytool -genkey -v -alias tomcat -keyalg RSA -keystore tomcat.keystore -validity 36500
注意:最后一步的输入tomcat密钥口令一定要和第一步输入的密码一致,不然tomcat启动就报错
出现的问题:
在请求网站的过程中发现,存在很多资源无法访问的情况,因为我们在打开首页的时候,又去请求了其他服务器下的资源。百度一番发现原来是,在https页面只通过https 去请求资源,网上有很多的人说可以去掉请求的协议,浏览器会默认通过https请求,失败转而使用http请求,但是这里我做了处理之后仍然不起作用,不知道是不是ajax请求不起作用,(有空测试下在补充)。所以没有办法,只能通过使用nginx代理https。其中ngnix 以及openssl使用如下。
- nginx
由于在window中使用nginx,直接下载nginx的压缩包,解压之后,配置
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
ex:
将上面的打开进行配置,在配置中需要提供证书,所以通过openssl进行证书生成
- openssl
同样是在window下使用,所以直接下载安装程序,网上有说官网提供了Win32OpenSSL_Light-1_1_0h.exe,下载之后,安装提示要把ddl放在system还是自己的选择的目录中,果断选择自定义的bin目录。之后进行证书生成,步骤如下:
1) 生成RSA私钥
openssl genrsa -des3 -out server.key 1024
2) 生成签名
openssl req -new -key server.key -out server.csr
3) 根据已生成的RSA私钥输出无加密的私钥
openssl rsa -in server.key -out server_nopass.key
4) 使用签名和私钥生成crt证书
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
*注意: *记住在nginx 配置的时候,在window中把生成的证书放在nginx conf目录中,否则会出现找不到证书的错误
仍然出现问题:
由于是openssl签发的证书,并不能在代码,比如我使用ajax请求对应的地址可以成功,一般我们请求https 地址,如果是不受信任的证书,浏览器都会提示,私密链接,我们会选择高级继续访问,如果不是有效的证书,在代码中调用依然是不成功的。
fine,白忙活了,当做学习一波吧~~~~