是互联网安全HTTPS势在必行,但需要先购买证书。虽然有很多可以申请的免费证书,但是需要一个域名才能通过验证。在实践中,我们有一些内部系统或者一些测试环境是没有域名或者不需要设置域名的。这种情况下如何使用HTTPS,就是本文要给大家介绍的自签名证书方式。安装和升级openSSLOpenSSL是整个底层加密算法库和工具的基础。我们的网络服务器依赖于它的类库来实现SSL/TSL模块和HTTPS来工作。颁发证书时也需要OpenSSL。在生成自签名时,我们可以使用其他更专业的软件,比如GPG。我们在之前的文章中介绍过GPG的使用,大家可以参考历史文章。在本文中,为了方便起见,使用OpenSSL来颁发证书。由于OpenSSL升级可能会影响到很多软件,所以我们不直接升级,而是在/usr/local/ssl目录下生成一个新版本的OpenSSL,这样就不会影响其他已有版本的软件。首先下载新版本的OpenSSL。为了兼容性,我们选择1.0.2系列版本:wgetUrl--no-check-certificatetar-zxvfopenssl-*.tar.gzcdopenssl-*./config-fpicshared&&make&&makeinstallecho"/usr/local/ssl/lib">>/etc/ld.so.confldconfig生成自签名证书和子签名证书使用相同的商业证书,但证书需要自己生成。首先确保OpenSSL升级到新版本,或者通过yumupdateopenssl升级,确保现有的ssl漏洞得到解决。mkdir/etc/sslchmod700/etc/ssl/usr/local/openssl/bin/opensslreq-newkeyrsa:2048-nodes-keyout/etc/ssl/rsa_private.key-x509-days888-outcert.crt-subj/C=CN/ST=BJ/L=CY/O=CC/OU=OP/CN=Chongchong/emailAddress=test@cc.info为了避免在创建证书的过程中交互填写信息,我们使用-subj参数指定这里的一些参数在实际使用中,可以根据自己的需要自行设置:C=CN←国家代码,China输入CNST=BJ←州(省)名L=CY←所在城市名O=CC←组织或公司名OU=OP←部门名CN=冲冲←普通名,可以是服务器的域控名,也可以是个人名emailAddress=test@cc.info←管理邮箱名会生成网站私钥rsa_private。密钥和网站证书cert.crt已准备就绪。证书的验证可以在设置成功后进行。为证书安全设置权限:chmod600/etc/ssl/*NginxHTTPS安全配置保证nginx使用新版本的nginx(当前版本为1.15.11、1.12.2),如果系统使用其他应用服务器,一般做法是在新的添加nginx作为反向代理,代理到应用服务器,比如tomcat,然后在Nginx反向代理中配置https。打开一个新的虚拟主机并在服务器中设置它{...}部分:注意nginx的新语法中不再使用sslon;相反,ssl被添加到listen语句中;443是默认的https端口,可以根据实际情况改成其他的。听*:443ssl;ssl_certificate/etc/ssl/cert.crt;ssl_certificate_key/etc/ssl/rsa_private.key;ssl_protocolsTLSv1.2;ssl_prefer_server_cipherson;ssl_ciphers“EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH”;ssl_ecdh_curvesecp384r1;ssl_session_cacheshared:SSL:10m;ssl_session_ticketsoff;add_headerStrict-Transport-Security"max-age=63072000;includeSubDomains;preload";其中path为刚刚生成的网站证书的路径。根据网站的实际情况,配置可能会有所不同。我们可以使用Mozilla的服务器端TLS配置在线生成器,我们在之前的文章中也提到过:配置完成后,使用nginx命令检测配置并重新加载Nginx:检测配置:nginx-treload:nginx-sreloadNginx优化配置,优化Nginx性能在http{...}中加入:ssl_session_cacheshared:SSL:10m;ssl_session_timeout10m;增加session缓存可以提高nginx处理https的性能。在配置了https的虚拟主机服务器{..}中添加:keepalive_timeout70;设置超时时间,可能会因为超时导致性能问题。fastcgissl配置有时启用https,部分php程序认证通过后跳转页面错误,跳转到http导致问题。解决方法是在includefcgi.conf中找到“location~.*.(php|php5)?${}”;或者在fastcgi_param配置后添加:fastcgi_paramHTTPSon;fastcgi_paramHTTP_SCHEMEhttps;浏览器使用自签名https证书添加网站信任,默认浏览器拒绝访问,需要将网站添加到浏览器信任列表中才能访问。添加信任的方法:在firefox中点击Advanced,将要访问的url添加到trust中:ChromeChrome设置类似,点击Advanced,点击继续证书验证查看我们的自签名证书信息:同上我们在第二部分生成证书时设置的参数。
