Nginx配置SSL证书签名的步骤

要保证Web浏览器到服务器的安全连接,HTTPS几乎是唯一选择。HTTPS其实就是HTTP over SSL,也就是让HTTP连接建立在SSL安全连接之上。

SSL使用证书来创建安全连接。有两种验证模式:

仅客户端验证服务器的证书,客户端自己不提供证书;

客户端和服务器都互相验证对方的证书。

显然第二种方式安全性更高,一般用网上银行会这么搞,但是,普通的Web网站只能采用第一种方式。

客户端如何验证服务器的证书呢?服务器自己的证书必须经过某“权威”证书的签名,而这个“权威”证书又可能经过更权威的证书签名,这么一级一级追溯上去,最顶层那个最权威的证书就称为根证书。根证书直接内置在浏览器中,这样,浏览器就可以利用自己自带的根证书去验证某个服务器的证书是否有效。

如果要提供一个有效的证书,服务器的证书必须从VeriSign这样的证书颁发机构签名,这样,浏览器就可以验证通过,否则,浏览器给出一个证书无效的警告。

申请一个证书签名的费用是一年几十~几百刀不等,所以如果只是出于管理目的,可以创建自签名证书,保证管理员通过浏览器安全连接到服务器。

下面简单介绍如何创建一个自签名的SSL证书。

创建自签名证书需要安装openssl,使用以下步骤:

创建Key;

创建签名请求;

将Key的口令移除;

用Key签名证书。

为HTTPS准备的证书需要注意,创建的签名请求的CN必须与域名完全一致,否则无法通过浏览器验证。

以上步骤命令繁琐,所以我做了一个shell脚本,能一次性把证书搞定。从这里下载脚本:

https://github.com/michaelliao/itranswarp.js/blob/master/conf/ssl/gencert.sh

运行脚本,假设你的域名是www.111cn.net ,那么按照提示输入:

$ ./gencert.sh 

Enter your domain [www.example.com]: www.111cn.net           

Create server key...

Generating RSA private key, 1024 bit long modulus

.................++++++

.....++++++

e is 65537 (0x10001)

Enter pass phrase for www.111cn.net .key:输入口令

Verifying - Enter pass phrase for www.111cn.net .key:输入口令

Create server certificate signing request...

Enter pass phrase for www.111cn.net .key:输入口令

Remove password...

Enter pass phrase for www.111cn.net .origin.key:输入口令

writing RSA key

Sign SSL certificate...

Signature ok

subject=/C=US/ST=Mars/L=iTranswarp/O=iTranswarp/OU=iTranswarp/CN=www.111cn.net 

Getting Private key

TODO:

Copy www.111cn.net .crt to /etc/nginx/ssl/www.111cn.net .crt

Copy www.111cn.net .key to /etc/nginx/ssl/www.111cn.net .key

Add configuration in nginx:

server {

    ...

    ssl on;

    ssl_certificate     /etc/nginx/ssl/www.111cn.net .crt;

    ssl_certificate_key /etc/nginx/ssl/www.111cn.net .key;

}

红色部分是输入,注意4次输入的口令都是一样的。

在当前目录下会创建出4个文件:

www.111cn.net .crt:自签名的证书
www.111cn.net .csr:证书的请求
www.111cn.net .key:不带口令的Key
www.111cn.net .origin.key:带口令的Key

Web服务器需要把www.111cn.net .crt发给浏览器验证,然后用www.111cn.net .key解密浏览器发送的数据,剩下两个文件不需要上传到Web服务器上。

以Nginx为例,需要在server {...}中配置:

server {

    ...

    ssl on;

    ssl_certificate     /etc/nginx/ssl/www.111cn.net .crt;

    ssl_certificate_key /etc/nginx/ssl/www.111cn.net .key;

}

如果一切顺利,打开浏览器,就可以通过HTTPS访问网站。第一次访问时会出现警告(因为我们的自签名证书不被浏览器信任),把证书通过浏览器导入到系统(Windows使用IE导入,Mac使用Safari导入)并设置为“受信任”,以后该电脑访问网站就可以安全地连接Web服务器了:

 

如何在应用服务器中配置证书呢?例如Tomcat,gunicorn等。正确的做法是不配置,让Nginx处理HTTPS,然后通过proxy以HTTP连接后端的应用服务器,相当于利用Nginx作为HTTPS到HTTP的安全代理,这样即利用了Nginx的HTTP/HTTPS处理能力,又避免了应用服务器不擅长HTTPS的缺点。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索net
, 服务器
, 安全
, nginx
, 浏览器
https
nginx ssl 自签名证书、nginx ssl 自签名、nginx ssl证书安装、nginx配置ssl证书、nginx ssl证书,以便于您获取更多的相关知识。

时间: 2024-10-23 03:32:56

Nginx配置SSL证书签名的步骤的相关文章

Nginx 配置SSL 证书 + 搭建 HTTPS网站的方法

一.HTTPS 是什么? 根据维基百科的解释: 超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合,用以提供加密通讯及对网络服务器身份的鉴定.HTTPS连接经常被用于万维网上的交易支付和企业信息系统中敏感信息的传输.HTTPS不应与在RFC 2660中定义的安全超文本传输协议(S-HTTP)相混. HTTPS 目前已经是所有注重隐私和安全的网站的首选,随着技术的不断发展,HTTPS 网站已不再是

Nginx 下配置SSL证书的方法_Linux

1.Nginx 配置 ssl 模块 默认 Nginx 是没有 ssl 模块的,而我的 VPS 默认装的是 Nginx 0.7.63 ,顺带把 Nginx 升级到 0.7.64 并且 配置 ssl 模块方法如下: 下载 Nginx 0.7.64 版本,解压 进入解压目录: 复制代码 代码如下: wget http://sysoev.ru/nginx/nginx-0.7.64.tar.gz tar zxvf nginx-0.7.64.tar.gz cd nginx-0.7.64 如果要更改heade

【图解】nginx配置ssl双向验证及nginx https ssl证书配置教程

1.安装nginx centos下Nginx安装配置步骤详解 http://www.111cn.net/sys/CentOS/80387.htm windows下安装nginx 详解教程 http://www.111cn.net/wy/156/38731.htm 2.使用openssl实现证书中心 由于是使用openssl架设私有证书中心,因此要保证以下字段在证书中心的证书.服务端证书.客户端证书中都相同 Country Name  State or Province Name  Localit

centos中Nginx 安装ssl证书步骤

先说下https也就是ssl证书,一般我们认为https是安全的,但是SSL 证书的信用链体系并不安全.特别是在某些国家(咳咳,你们懂的)可以控制 CA 根证书的情况下,中间人攻击一样可行.另外,在客户端被植入无数后门.木马的状况下,HTTPS 连接的作用非常有限.   我不使用的原因 更换https和替换域名代价是一样的又拍云不支持自定义域名https好了,我们可以开始配置ssl了.一般来说我比较推荐namecheap的ssl证书,因为比较便宜,毕竟对大部分个人博客来说只是想要那个绿锁提升逼格

Ubuntu12.04系统给nginx创建SSL证书

关于自签名证书 SSL证书是一种加密网站的信息,并创建一个更安全的连接.此外,该证书可显示虚拟专用erver的身份信息,网站的访问者.证书颁发机构可以颁发的SSL证书验证服务器的详细信息,而自签名证书有没有第三方的佐证. 设定 在本教程中的步骤需要用户具有root权限.你可以看到如何设置在初始服务器安装教程步骤3和步骤4. 此外,您必须已经安装并在您的VPS运行nginx的.如果不是的话,你可以用这个命令下载: sudo apt-get install nginx 一步证书一创建目录 SSL证书

nginx 配置 ssl 模块支持 https

SSL英文名为Secure Socket Layer,安全套接字层.SSL是一种数字证书,它使用ssl协议在浏览器和web server之间建立一条安全通道,数据信息在client与server之间的安全传输 在这之前,记得nginx编译安装时加参数–with-http_ssl_module,使得nginx支持ssl模块. 一.颁发证书 下面自行颁发不受浏览器信任的证书 cd /usr/local/nginx/conf/key 1.创建服务器私钥,并输入口令 openssl genrsa -de

Nginx部署SSL证书的实例

  一.申请SSL证书 国外的startssl和国内的沃通都可以申请免费的SSL证书,当然也有很多收费的,如果只是个人博客网站,其实免费的足矣,可以参考文章:沃通免费SSL证书申请,申请免费的SSL证书. 二.相关环境准备 光有了证书还不行呀,您还需要搭建WEB服务器才能将证书放上去,上面已经提到LNMP一键包.AMH主机面板.OneinStack均使用的Nginx作为WEB服务器,安装其中之一即可. 三.部署SSL 最关键的步骤来了,首先您需要将步骤一中的SSL证书上传到服务器的某个目录,可以

nginx配置ssl加密(单/双向认证、部分https)

nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始采用的是全站加密,所有访问http:80的请求强制转换(rewrite)到https,后来自动化测试结果说响应速度太慢,https比http慢慢30倍,心想怎么可能,鬼知道他们怎么测的.所以就试了一下部分页面https(不能只针对某类动态请求才加密)和双向认证.下面分节介绍. 默认nginx是没有安装ssl模块的,需要编译安装nginx时加入--with

配置SSL证书出现"PEM_read_bio:bad end line"问题解决办法

老左有看到网友提到在参考"利用SSL For Free工具3分钟获取Let's Encrypt免费SSL证书"文章教程中申请和配置SSL网站安全证书的时候提到在配置到VPS WEB环境中的时候有错误提示.因为在这篇文章中我是介绍到使用到cPanel面板虚拟主机环境的,所以根据生产的3个证书文件的时候不需要修改文件. 但是,如果我们希望用到服务器中的时候,则需要将Privacy Key.CA_bundle.crt 和 certificate.crt三个证书文件进行合并处理.这里如果我们合