Nginx下配置Https证书详细过程
一、Http与Https的区别
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
二、使用openssl生成证书
openssl是目前最流行的SSL密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持SSL/TLS协议的实现。
比如生成到:/usr/local/ssl
opensslreq-x509-nodes-days36500-newkeyrsa:2048-keyout/usr/local/ssl/nginx.key-out/usr/local/ssl/nginx.crt
生成过程:
#opensslreq-x509-nodes-days36500-newkeyrsa:2048-keyout/usr/local/ssl/nginx.key-out/usr/local/ssl/nginx.crt Generatinga2048bitRSAprivatekey ...............................................................................+++ ...............+++ writingnewprivatekeyto'/usr/local/ssl/nginx.key' ----- Youareabouttobeaskedtoenterinformationthatwillbeincorporated intoyourcertificaterequest. WhatyouareabouttoenteriswhatiscalledaDistinguishedNameoraDN. Therearequiteafewfieldsbutyoucanleavesomeblank Forsomefieldstherewillbeadefaultvalue, Ifyouenter'.',thefieldwillbeleftblank. ----- CountryName(2lettercode)[XX]:CN StateorProvinceName(fullname)[]:beijing LocalityName(eg,city)[DefaultCity]:beijing OrganizationName(eg,company)[DefaultCompanyLtd]:xxxx OrganizationalUnitName(eg,section)[]:xxxx CommonName(eg,yournameoryourserver'shostname)[]:xxxx(一般是域名) EmailAddress[]:xxxx@xxxx.com #ll total8 -rw-r--r--.1rootroot1391Apr2113:29nginx.crt -rw-r--r--.1rootroot1704Apr2113:29nginx.key
三、Nginx安装http_ssl_module模块
Nginx如果未开启SSL模块,配置Https时提示错误。
nginx:[emerg]the"ssl"parameterrequiresngx_http_ssl_modulein/usr/local/nginx/conf/nginx.conf:xxx
nginx缺少http_ssl_module模块,编译安装的时候带上--with-http_ssl_module配置就行了。
本场景是服务器已经安装过nginx,但是未安装http_ssl_module。
1.进入到源码包,如:
cd/app/download/nginx-1.12.2
2.configure:
./configure--prefix=/usr/local/nginx--with-http_stub_status_module--with-http_ssl_module #可能需要的依赖包 yum-yinstallpcre-developensslopenssl-devel
3.make:
make
4.不需要执行makeinstall,否则就覆盖安装了。
5.备份原有的nginx,如:
cp/usr/local/nginx/sbin/nginx/usr/local/nginx/sbin/nginx_bak
6.然后将刚刚编译好的nginx覆盖掉原有的nginx(nginx需要停止)
cp./objs/nginx/usr/local/nginx/sbin/
7.查看安装情况:
/usr/local/nginx/sbin/nginx-V
nginxversion:nginx/1.12.2 builtbygcc4.8.520150623(RedHat4.8.5-16)(GCC) builtwithOpenSSL1.0.2k-fips26Jan2017 TLSSNIsupportenabled configurearguments:--prefix=/usr/local/nginx--with-http_stub_status_module--with-http_ssl_module
四、nginx配置https
贴部分配置信息:
server{ listen 80; server_namewww.yourdomain.com; rewrite^(.*)https://$server_name$1permanent;#http跳转https }
server{ listen443ssl; server_namewww.yourdomain.com; ssl_certificate/usr/local/ssl/nginx.crt; ssl_certificate_key/usr/local/ssl/nginx.key; ssl_session_cacheshared:SSL:1m; ssl_session_timeout5m; #禁止在header中出现服务器版本,防止黑客利用版本漏洞攻击 server_tokensoff; #如果是全站HTTPS并且不考虑HTTP的话,可以加入HSTS告诉你的浏览器本网站全站加密,并且强制用HTTPS访问 fastcgi_paramHTTPSon; fastcgi_paramHTTP_SCHEMEhttps; access_log/usr/local/nginx/logs/httpsaccess.log; }
先检验配置的对不对:
/usr/local/nginx/sbin/nginx-t
nginx:theconfigurationfile/usr/local/nginx/conf/nginx.confsyntaxisok nginx:configurationfile/usr/local/nginx/conf/nginx.conftestissuccessful
重启nginx:
/usr/local/nginx/sbin/nginx-sreload
访问:
到此这篇关于Nginx下配置Https证书详细过程的文章就介绍到这了,更多相关Nginx配置Https证书内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。