Nginx配置SSL证书部署HTTPS网站


一、什么是 SSL 证书,什么是 HTTPS
SSL 证书是一种数字证书,它使用 Secure Socket Layer 协议在浏览器和 Web 服务器之间建立一条安全通道,从而实现:
1、数据信息在客户端和服务器之间的加密传输,保证双方传递信息的安全性,不可被第三方窃听;
2、用户可以通过服务器证书验证他所访问的网站是否真实可靠。

HTTPS 是以安全为目标的 HTTP 通道,即 HTTP 下加入 SSL 加密层。HTTPS 不同于 HTTP 的端口,HTTP默认端口为80,HTTPS默认端口为443。

二、自行颁发不受浏览器信任的SSL证书

  • 生成一个RSA密钥

$ openssl genrsa -des3 -out yt.key 1024

image.png

 

  •  拷贝一个不需要输入密码的密钥文件

$ openssl rsa -in 33iq.key -out yt_nopass.key

image.png

 

  • 生成一个证书请求

$ openssl req -new -key yt.key -out yt.csr

注:该命令是生成证书请求,会提示输入省份、城市、域名信息等,重要的是,email一定要是你的域名后缀的。这样就有一个 csr 文件了,提交给 ssl 提供商的时候就是这个 csr 文件。当然我这里并没有向证书提供商申请,而是在后面自己签发了证书。

image.png 

 

  • 自己签发证书

$ openssl x509 -req -days 365 -in yt.csr -signkey yt.key -out yt.crt

image.png

 

注:把生成的证书放到nginx配置文件统计目录下。我的在/usr/local/nginx/conf/

 

image.png

三、修改nginx主配文件nginx.conf

server {

    server_name yt.com;

    listen 443;



    ssl on;

    ssl_certificate /usr/local/nginx/conf/yt.crt;

    ssl_certificate_key /usr/local/nginx/conf/yt_nopass.key;

注:若ssl_certificate_key使用tfjybj.key,则每次启动Nginx服务器都要求输

入key的密码。

image.png

 

重启nginx服务

nginx –s reload

自己颁发的SSL证书能够实现加密传输功能,但浏览器并不信任,会给出提示:

image.png

image.png

 

 

 

通过第三方颁发证书(阿里云)

颁发证书

登录阿里云管理控制台,【云盾】菜单选择【证书服务】,选择购买证书; 
我弄得免费版的做的测试,申请之后,经过一两天的审核,然后就可以下载证书了。下载解压后是两个文件,一个key结尾,私钥,一个是pem结尾,是公钥。

配置nginx

文件说明:

证书文件”申请的证书名字.pem”,包含两段内容,请不要删除任何一段内容。

如果是证书系统创建的CSR,还包含:证书私钥文件”申请的证书名字.key”。

( 1 ) 在Nginx的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为”申请的证书名字.key”;

( 2 ) 打开 Nginx 安装目录下 conf 目录中的 nginx.conf 文件,找到:



# HTTPS server
# #server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
# ssl_prefer_server_ciphers on;
# location / {
#
#
#}
#}


 ( 3 ) 将其修改为 (以下属性中ssl开头的属性与证书配置有直接关系,其它属性请结合自己的实际情况复制或调整) :

server { 
listen 443; 
server_name localhost; 
ssl on; 
root html; 
index index.html index.htm; 
ssl_certificate cert/
申请的证书名字.pem; 
ssl_certificate_key cert/申请的证书名字.key; 
ssl_session_timeout 5m; 
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
ssl_prefer_server_ciphers on; 
location / { 
root html; 
index index.html index.htm; 


保存退出。

( 4 )重启 Nginx。

( 5 ) 通过 https 方式访问您的站点

 

 

   

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章