首先,搭建https服务肯定需要一个https证书。这个证书可以看做是一个应用层面的证书。之所以这么说是因为https证书是基于CA证书生成的。对于正式的网站,CA证书需要到有资质的第三方证书颁发机构去申请获取。对于我们自建的一些小项目,可以使用自己的服务器自签CA证书。这类证书构建出来的HTTPS服务在访问的时候浏览器会发出不可信任的警告,对于自身项目无视即可。

  参考文:【https://blog.csdn.net/xizaihui/article/details/53178897】

■  自签CA证书

  以下命令(包括自签CA证书以及HTTPS证书签名的所有命令)都可在同一个目录下完成。

  1. 生成CA私钥

  # openssl genrsa -des3 -out ca.key 2048

  此命令应该会要求你输入一个ca.key对应的加密密码。输入后密码需要记下来后面还要用。

  2. 生成不加密的CA私钥(可不做)

  # openssl genrsa -out ca_decrypted.key 2048

  3. 生成CA公钥即CA根证书

  # openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

  输入命令后应该会需要你输入一些证书相关的周边信息。比如证书颁发机构所在地址,机构名称等等。这里可以都直接回车不填,唯一需要注意的是Common Name那一栏。为了后面操作顺利,按照我现有的实践将这里填写主机名或者主机IP

■  生成HTTPS证书并且用CA证书签名

  在生成HTTPS证书的时候需要明确主机名或者主机IP,也就是上面生成CA根证书时输入的那玩意儿。

  1. 生成HTTPS证书私钥

  # openssl genrsa -des3 -out xxxx.pem 1024

  这里的xxxx指的就是上面说的主机名或者主机IP。下面类似不重复说明了

  2. 生成不加密的https主机证书私钥(可不做)

  # openssl rsa -in xxxx.pem -out xxxx.key

  3. 生成签名请求

  # openssl req -new -key xxxx.pem -out xxxx.csr

  4. 用CA进行签名

  # openssl ca -policy policy_anything -days 3650 -cert ca.crt -keyfile ca.key -in xxxx.csr -out xxxx.crt

  其中,policy参数允许签名的CA和网站证书可以有不同的国家、地名等信息,days参数则是签名时限。

  在签名的时候很可能会碰到

  I am unable to access the /etc/pki/CA/newcerts directory
  /etc/pki/CA/newcerts: Permission denied

  的错误。这主要是因为当前执行签名的用户不是root而openssl默认需要将CA相关的一些信息文件放到/etc/pki/CA这个root权限的目录下。要解决这个问题,可以用root用户修改/etc/pki/tls/openssl.cnf文件中的dir配置项。这个配置默认值是/etc/pki/CA,只要改成./CA即可。

  然后还要回到之前在生成https证书的目录下,进行如下操作

  # mkdir -p CA/newcerts

  # touch CA/index.txt

  # echo '01' > CA/serial

  之后再次运行刚才CA签名的命令。

■  配置nginx

  在nginx的server配置块中(或者新建一个server配置块)修改或新增如下:

listen 443;
ssl on;
ssl_certificate /path/to/xxxx.crt;
ssl_certificate_key /path/to/xxxx.key;
keepalive_timeout 70;

  最后一项据说是优化项,可加可不加。

  还有两个优化项可以加入到http{}配置块中:

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

  修改完成之后可以使用nginx -t命令检查配置文件格式是否正确。

  如果报错说unknown directive ssl什么的话,主要是因为nginx当时编译安装的时候没有将ssl部分的模块编译装进去。解决的办法是找到当时nginx源码包的目录(或者新下载一个也行)

  进入后./configure --with-http_ssl_module重新编译,然后make。注意不要make install,,此时如果make install会把当前nginx以及相关配置文件都覆盖掉!

  然后将源码包目录下的objs/nginx可执行文件替换系统中目前的nginx可执行文件。(注意备份)

  之后在nginx -t应该就可以了。

■  之后……

  在将HTTP项目升级部署为HTTPS项目之后,可能会发生一些需要调试的东西。比如说可能原先在页面上要访问同服务器其他端口的HTTP服务,此时如果本服务已经变成了HTTPS了的话,那么会报错无法进行访问。此时就有必要对对方服务进行HTTPS升级。

  如果需要本项目同时可以被HTTP和HTTPS两种协议访问,那么可以尝试修改nginx配置,将server配置块中的listen加上诸如listen 80;\nlisten 443 ssl on;这样的配置。具体不展开了,网上也有很多相关的资料。

【HTTPS】自签CA证书 && nginx配置https服务的更多相关文章

  1. 阿里云ssl证书NGINX配置https,wss

    server { listen 443; server_name server.sentiger.com; ssl on; root /home/wwwroot/Service/beta/public ...

  2. nginx配置https双向验证(ca机构证书+自签证书)

    nginx配置https双向验证 服务端验证(ca机构证书) 客户端验证(服务器自签证书) 本文用的阿里云签发的免费证书实验,下载nginx安装ssl,文件夹有两个文件 这两个文件用于做服务器http ...

  3. nginx 配置https并自签名证书

    2016-10-28 转载请注明出处:http://daodaoliang.com/ 作者: daodaoliang 版本: V1.0.1 邮箱: daodaoliang@yeah.net 参考链接: ...

  4. nginx配置https及Android客户端访问自签名证书

    前一篇随笔通过keytool生成keystore并为tomcat配置https,这篇随笔记录如何给nginx配置https.如果nginx已配置https,则tomcat就不需要再配置https了.通 ...

  5. nginx配置https转发到tomcat(使用自签名的证书)

    一.使用openSSL生成自签名的证书 1.生成RSA私钥 命令:openssl genrsa -des3 -out server.key 1024 说明:生成rsa私钥,des3算法,1024强度, ...

  6. 购买https证书以及nginx配置https

    文章来源 运维公会:购买https证书以及nginx配置https 1.https的作用 https的全名是安全超文本传输协议,是在http的基础上增加了ssl加密协议.在信息传输的过程中,信息有可能 ...

  7. 【Nginx(五)】Nginx配置Https证书

    大致的流程如下 1.申请Https证书,绑定域名信息; 由于自己的服务器是腾讯云服务器, 这里就在腾讯云上申请SSL证书, 申请地址: https://console.cloud.tencent.co ...

  8. Nginx 配置https 服务

    一.HTTPS 服务 为什么需要HTTPS? 原因:HTTP不安全 1.传输数据被中间人盗用.信息泄露 2.数据内容劫持.篡改 HTTPS协议的实现 对传输内容进行加密以及身份验证 HTTPS加密校验 ...

  9. 【转】Linux下nginx配置https协议访问的方法

    一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...

随机推荐

  1. 10.16 NOIP模拟赛

    目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...

  2. 滑动CheckBox样式

    <Style x:Key="SliderCheckBox" TargetType="{x:Type CheckBox}"> <Setter P ...

  3. 潭州课堂25班:Ph201805201 python 模块 datetime,logging 第七课 (课堂笔记)

    datetime 模块 # -*- coding: utf-8 -*-# 斌彬电脑# @Time : 2018/7/9 0009 20:42import datetime d = datetime.d ...

  4. 富文本兼容性问题归纳(win)

    上周抽空把去年写的富文本重写了一下,封装成基本UI组件,就可以在聊天框之外的地方复用了.个人觉得富文本是个兼容问题最多的模块之一,尤其是文档也没几个,把mozilla的api文档和IE的dom api ...

  5. 微软BI 之SSIS 系列 - 对于平面文件中 NULL 值处理过程中容易极易混淆的几个细节

    开篇介绍 最近有人问我有关文件处理中空值处理的相关问题: OLE DB Destination 中的 Keep Nulls 如何控制 NULL 值的显示? 为什么选中了 Keep Nulls 但是数据 ...

  6. Windows 下使用 MinGW 和 CMake 进行开发

    CMake 是个非常棒的项目管理工具,这已经是毋庸置疑的. 一些小工具需要在 win 下开发,所以今天探索使用 MinGW 和 CMake 在 win 下的搭配使用.简单做记录. MinGW 使用 Q ...

  7. EOF多行写入文件防止变量替换

    问题描述 对多个变量及多行输出到文件,存在变量自动替换,当使用cat<<EOF不想对内容进行变量替换.命令替换.参数展开等 问题解决 转义特殊字符如 $ `等 一.对 $·\ 进行转义 c ...

  8. javascript回调函数笔记

    来源于:https://github.com/useaname/blog-study 在Javascript中,函数是第一类对象.意味函数可以像对象一样按照第一类被管理使用.回调函数是从一个叫函数式编 ...

  9. Linux中搭建一个ftp服务器详解

    来源:Linux社区  作者:luzhi1024 详解Linux中搭建一个ftp服务器. ftp工作是会启动两个通道:控制通道 , 数据通道在ftp协议中,控制连接均是由客户端发起的,而数据连接有两种 ...

  10. no accounts with itunes connect access

    有时候打包上传的时候 会遇见  no accounts with itunes connect access 的报错 原因主要如下: 1. 你没有被开发者管理员加入 itunes connect 权限 ...