本站停止维护,已转移至laravel学习网;欢迎大家移步访问!

[教程]Ubuntu下Nginx配置HTTPS并且申请导入ssl免费证书

作为IT界的同学来说,2017年,https必须是一个关键词,苹果宣布所有iOS app将在2017年使用HTTPS,其实https真的比http安全么?答案是肯定的,我自己从抓包和网络劫持测试,https会以TLSv1.2 等 SSL 协议传输,相对http来说,安全性极大提高,但是也是可以通过导入证书等解析出传输的数据,好啦,大家有想了解抓包的咋们单独再开贴,今天我们来介绍怎么让自己的网站变成https

注意:楼主申请的免费3天的腾讯云测试,大家也可以去申请来玩一下,一个qq可以申请一次,大家学习可以随便玩,我觉得还是蛮方便的

1、关系ubuntu并且安装nginx

sudo apt-get update  #更新
sudo apt-get install nginx #安装nginx

安装nginx后我们在浏览器输入我们的公网ip地址会发现出现nginx 安装成功界面,如图所示,如果你已经安装了nginx跳过屏幕快照 2017-01-19 下午11

2、生成自签名证书(测试用途):

这里我们自己来生成一个证书来玩玩,但是我可以负责任的告诉大家,你安装了一个假的ss证书,哈哈哈哈,不过你可以用来做测试作用,等我们真正的证书申请下来以后,再去修改一下就很方便了,命令如下

cd /var/www
mkdir ssl
cd ssl
sudo openssl genrsa -des3 -out server.key 1024    #这里你设置一个密码,自己记得住下面用,临时记住就可以了
sudo openssl req -new -key server.key -out server.csr  #输入密码,然后跟着设置就可以了,下面会介绍
sudo openssl rsa -in server.key -out server_nopwd.key  #这里输入上面设置的密码就可以了
sudo openssl x509 -req -days 365 -in server.csr -signkey server_nopwd.key -out server.crt     #输入密码就可以了

好的,上面备注的第二部配置比较多一点,但是你随便输入没什么关系的,反正都是测试证书,你看一下下面的提示

ubuntu@VM-116-2-ubuntu:~$ sudo openssl req -new -key server.key -out server.csr  

Enter pass phrase for server.key:   ←输入第一步中生成server.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 ←输入国家代码,2位 
State or Province Name (full name) [Some-State]:Beijin ← 输入省名  
Locality Name (eg, city) []:Beijin ←输入城市名  
Organization Name (eg, company) [Internet Widgits Pty Ltd]:TEST ← 输入公司名  
Organizational Unit Name (eg, section) []:Lusong ← 输入组织单位名  
Common Name (eg, YOUR name) []:bbs.earnp.com ← 输入主机名  
Email Address []:a@qq.com ←输入电子邮箱地址  
← 回车
← 回车

其实上面的配置不要求准确,要求合规就可以了,不要光看第二处的代码,要把第一处的代码执行完好吧?

3、配置Nginx HTTPS访问:

编辑nginx配置文件

sudo vim /etc/nginx/sites-available/default  

在默认的配置下把第二个listen改成443,然后加上如下代码

server {  
     listen 80;
     listen 443;

     ###其他配置

     ssl                  on;  
     ssl_certificate      /var/www/ssl/server.crt;  
     ssl_certificate_key  /var/www/ssl/server_nopwd.key; 
     ### 
 }  

重启nginx

service nginx restart

我们在浏览器输入我们的ip地址,看到如下,代表我们配置成功屏幕快照 2017-01-19 下午11

接下来我们我们把我们的测试域名绑定到主机,我这里是ssl.earnp.com,我输入https://ssl.earnp.com如图,提示不安全,我们点击高级并且信任,就可以访问我们的站点了6E93DB55-8FD5-4086-B2D7-501B125F816B

4、申请ssl证书:

ssl证书很方便申请,速度也很快,但是就是免费的只能单站点,比如bbs.earnp.com和earnp.com需要2个证书,我提供2个免费证书地址,大家也可以自行百度,很多的:阿里云ssl免费证书腾讯云ssl免费证书申请,好的我已经申请下来了CAF09ECD-CE26-4022-8802-34615D06A453

下载后解压,选择nginx,你会看到一个证书和一个密钥

5、导入配置ssl证书:

我们把证书和一个密钥导入服务器,比如导入/var/www下,怎么导入?打开命令行工具

sftp root@IP地址
# 密码
cd /var/www
put 证书或者密钥文件地址+文件名   文件名 #中间加个空格

好的我们上传了,那么我们来配置一下nginx

sudo vim /etc/nginx/sites-available/default  

修改证书地址

server {  
     ###其他配置

     ssl                  on;  
     ssl_certificate      /var/www/ssl/证书;  
     ssl_certificate_key  /var/www/ssl/密钥; 
     ### 
 }  

重启nginx

service nginx restart

到这里我们就可以了,刷新域名地址,相当安全3ADA928C-E9A4-42D0-B1FC-D7EE095AFCD1

总结:为了照顾新手,本文章比较详细,熟悉以后,只需要申请下载证书,然后在nginx导入证书即可,相当方便

转载请注明 :一沙网络原文出处:http://bbs.earnp.com/article/321
问题交流群 :562864481
0
打赏
发布时间 :2017-01-20 00:14:32
分享

1 个评论

  • 一沙
    回复
    2017-01-20 09:40

    注意,我nginx那里为什么要配置监听2个窗口呢?是为了让我们的站点http和https都支持,如果你只监听443,那么你只能访问https://域名

    listen 80;
    listen 443;

要回复文章请先登录注册