在本学期软件工程的Alpha和Beta阶段,我们的服务器部署都是使用基础的http协议,http在网络路由间的信息转发都为明文,这对我们网站的账户密码登录来说很不安全,因此在Gamma阶段我们实现了https协议传输。

1.https证书申请

https简单地说就是http加了一层ssl加密层,加密证书在任何一台计算机上都可以生成,但是由任意第三方生成的证书毫无疑问是不可靠的。因此有了CA这样的证书管理机构,CA在网络通信的过程中可以被认为是完全可信的第三方,使用CA的ssl证书才可以取得客户端浏览器的信任。

首先安装cerbot(在ubuntu上使用apt安装即可),使用下面的命令可以执行cerbot认证:

certbot certonly

认证过程中会出现选择:

1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)

在cerbot中有上面两种认证方式,第一种需要停止服务器,cerbot将建立一个临时服务器进行验证域名对应的IP是否为本机,第二种则不需要停止服务器的服务,需要在指定位置创建文件来验证你对该IP计算机的控制权。我们使用了第一种验证方式,因为不需要修改nginx配置文件所以更简单。选择验证方式后根据提示一步步填写邮箱、同意协议即可。

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/you.domain.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/you.domain.com/privkey.pem
Your cert will expire on 2018-01-26. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

显示以上内容的时候表示本机的https证书已经申请成功,密钥的文件地址也在其中。可以使用下面的命令查看这台计算机上的证书:

certbot certificates

2.https证书配置

https证书需要加入nginx的配置种,一方面我们需要在nginx中指定私钥和公钥的文件地址,另一方面需要大幅修改端口设置,http下的nginx配置可以参考上一篇技术博客。需要注意的是http是约定使用80端口通信,而https约定使用443端口通信,所以我们需要将80端口的流量重定向至https的443端口,确保所有的流量都以https方式传输。

server {
charset utf-8;
listen 80;
server_name www.you.domain.com you.domain.com;
return 301 https://you.domain.com$request_uri;
} server {
listen 443 default ssl;
server_name blogof33.com; ssl_certificate /etc/letsencrypt/live/you.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/you.domain.com/privkey.pem;
error_log /var/log/nginx/error.log; location / {
alias xxxxx;
}
}

随后重启nginx服务,至此配置完成。

最新文章

  1. 参加了iDOF2016会议,发表演讲“油田SOA与云平台的系统思考与实践”
  2. 【前端】JavaScript获取指定范围内的随机整数
  3. 重温Javascript第一章
  4. 【Alpha版本】 第六天 11.14
  5. 《Unix网络编程》卷一(简介TCP/IP、基础套接字编程)
  6. C# GUID的使用
  7. theos的makefile写法
  8. 【Xamarin开发 Android 系列 6】 Android 结构基础(上)
  9. MySQL UPDATE
  10. Ubuntu 开启远程登录 SSH 的安装和配置
  11. 可能是最简单的把C++Lib包装成C#可用dll的方法
  12. redis cluster的conf配置文件配置
  13. HTTP协议2
  14. MXNET:欠拟合、过拟合和模型选择
  15. 守护进程,互斥锁,IPC,队列,生产者与消费者模型
  16. 用大白菜U盘安装:[3]Ghost版Win7系统
  17. Qt QListWidget实现图片缩略图列表
  18. JS(JavaScript)脚本库的积累
  19. yii2.0用gii自动补全代码做的简单增删改查,以及图片上传和展示
  20. Java读写.properties文件实例,解决中文乱码问题

热门文章

  1. golang --os系统包
  2. c# asp.net core取当月第一天和最后一天及删除最后一个字符的多种方法
  3. (原创)使用C#开发高性能PLC上位机监控系统服务器应用程序
  4. Windows Server - 用tomcat部署finereport
  5. .Net IOC框架入门之——Unity
  6. Stage3D大冒险
  7. Android 解决Execution failed for task ':app:clean.'报错
  8. 前端开发者必备的Nginx知识
  9. Windows上安装运行Spark
  10. "轻"量级 Java Web 服务框架漫谈