搭建https+nginx的服务器,主要是安装ngnix和使用openssl生成自签证书,并在nginx中配置的过程
 
一、安装环境
1.安装opnssl(ssl支持)
2.安装pcre(支持rewrite重定向功能)
3.安装zlib(解压,因为我下载的pcre是zip文件)
4.安装nginx
 
以上软件的安装方法(有的可以通过yum直接安装):
1.直接在网上找下载地址,然后下载到linux服务器下:wget http://xxxx.tar.gz
2.解压下载的安装包:tar -zxf xxx.tar.gz
3.进入解压后的文件夹:cd xxx
4.对将要安装的软件进行配置(配置的--prefix是安装路径):./configure --prefix=/usr/local/xxx
5.对源代码进行编译:make
6.安装:make install
 
说明:ngnix安装时的配置命令为./configure --prefix=/usr/local/nginx-1.5.1 --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre=/opt/soft/pcre-8.38 --with-openssl=/opt/soft/openssl-1.0.1s
因为ngnix需要后面的依赖,所以后面需要加--with,具体软件后面的是依赖的软件目录
 
安装时遇到的问题如下:
 
1.安装zlib时遇到的问题
1.解压时报错,使用tar -zxvf zlib命令
[root@bjdhj-125-218 zlib-1.2.8]# tar -zxvf zlib
tar (child): zlib: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
解决方法:
用命令 tar -xf filename.tar.gz
 
2.安装nginx时出现的问题:
此时的./configure为./configure --prefix=/usr/local/nginx-1.5.1 --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre=/usr/local/pcre --with-openssl=/usr/local/ssl
问题一:
cd /usr/local/pcre / 
        && if [ -f Makefile ]; then make distclean; fi / 
        && CC="gcc" CFLAGS="-O2 -fomit-frame-pointer -pipe " / 
        ./configure –disable-shared 
/bin/sh: line 2: ./configure: No such file or directory 
make[1]: *** [/usr/local/pcre/Makefile] Error 127 
make[1]: Leaving directory `/usr/local/src/nginx-0.8.54′ 
make: *** [build] Error 2
解决方法:将--with-pcre=的路径改为下载pcre的源码路径
 
问题二:与问题一类似,改好问题一后才暴漏出来
cd /usr/local/ssl \
        && if [ -f Makefile ]; then make clean; fi \
        && ./config --prefix=/usr/local/ssl/.openssl no-shared  no-threads \
        && make \
        && make install LIBDIR=lib
/bin/sh: line 2: ./config: No such file or directory
make[1]: *** [/usr/local/ssl/.openssl/include/openssl/ssl.h] Error 127
make[1]: Leaving directory `/opt/soft/nginx-1.6.3'
make: *** [build] Error 2
将配置的的--with-openssl路径改为源码的下载路径
 
所以最后的配置如下:
./configure --prefix=/usr/local/nginx-1.5.1 --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre=/opt/soft/pcre-8.38 --with-openssl=/opt/soft/openssl-1.0.1s
 
 
 
二、生成双向证书
使用openssl生成私有证书,要保证证书中心、服务端、客户端证书中的以下内容相同:
Country Name:CA所在国家名字(CN)
State or Province Name:CA所在省(BJ)
Localty Name:CA所在市区(BJ)
Organization Name:CA的名字
Organizational Unit:CA的部门
Common Name
Email Address
Country Name CN
State or Province Name BJ
Locality Name BJ
Organization Name 58
Organizational Unit Name zhuanzhuan
Common Name qa
Email Address sunmin06@58ganji.com
 
具体步骤如下:
1.编辑证书中心配置文件:vi /etc/pki/tls/openssl.cnf
2.创建证书私钥cakey.pem文件
cd /etc/pki/CA/private
umask 077;openssl genrsa -out cakey.pem 2048
 
3.生成自签证书cacert.pem
cd /etc/pki/CA/
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655
 
4.创建服务器
mkdir /usr/local/nginx/ssl
cd/usr/local/nginx/ssl
umask 007;openssl genrsa -out nginx.key 1024
openssl req -new -key nginx.key -out nginx.csr
opensll ca -in nginx.csr -out nginx.crt -days 3650
说明:
1.nginx.key是生成私钥文件
2.nginx.csr是提取刚生成的私钥文件生成请求证书文件
3.将请求证书提交给证书颁发机构,CA,生成证书文件nginx.crt
 
5.创建客户端浏览器证书
umask 007;openssl genrsa -out client.key 1024
openssl req -new -key client.key -out client.csr
opensll ca -in client.csr -out client.crt -days 3650
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
说明:基本步骤与创建服务关的证书一致,只是最后多了一个将文本格式的证书转换成可以导入浏览器的证书client.p12
 
6.配置nginx的服务器验证
vi  /usr/local/nginx-1.5.1/conf/nginx.conf
ssl on;
ssl_certificate /usr/local/nginx/ssl/nginx.crt;
ssl_certificate_key /usr/local/nginx/ssl/nginx.key;
ssl_client_certificate /usr/local/nginx/ssl/cacert.pem;
ssl_session_timeout 5m;
#ssl_verify_client on; 服务器验证客户端,暂时不开启,让没有证书的客户端可以访问,先完成单向验证
ssl_protocols SSLv2 SSLv3 TLSv1;
说明:更改的是nginx.conf中监听443端口的server{}内容。https的端口默认是443。
 
配置时遇到的问题:
1.生成客户端证书时提示找不到文件:
文件1:
[root@bjdhj-125-218 ssl]# openssl ca -in client.csr -out client.crt -days 3650
Using configuration from /etc/pki/tls/openssl.cnf
/etc/pki/CA/index.txt: No such file or directory
unable to open '/etc/pki/CA/index.txt'
140196223215432:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('/etc/pki/CA/index.txt','r')
140196223215432:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
 
解决方法:
直接手动创建该文件
cd /etc/pki/CA/
touch index.txt
 
文件2:
[root@bjdhj-125-218 ssl]# openssl ca -in client.csr -out client.crt -days 3650
Using configuration from /etc/pki/tls/openssl.cnf
/etc/pki/CA/serial: No such file or directory
error while loading serial number
140284298094408:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('/etc/pki/CA/serial','r')
140284298094408:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
 
解决方法与上面一致。手动创建
touch serial
echo "00" >serial
注意:一定要将00重定向到serial文件,否则会报下面的错误:
[root@bjdhj-125-218 ssl]# openssl ca -in client.csr -out client.crt -days 3650
Using configuration from /etc/pki/tls/openssl.cnf
unable to load number from /etc/pki/CA/serial
error while loading serial number
140584495503176:error:0D066096:asn1 encoding routines:a2i_ASN1_INTEGER:short line:f_int.c:215:
 
感谢这篇文章,让我弄好了!
 
三、实验配置好的nginx
nginx的根目录下主要有以下目录:
conf:配置文件
html:配置文件默认根目录访问的内容(在./conf/nginx.conf中有配置。root  html)
sbin:nginx文件所在地,通过命令./nginx启动nginx,./nginx -s reload重启nginx
 
进入sbin,启动nginx,然后通过浏览器访问https://192.168.125.218来查看页面,看到以下页面即为成功,实际就是./html/index.html文件的内容(ip为nginx安装机器的ip地址)
 
 
 
备注:如果更改了nginx的配置文件。需要重启一下nginx配置才会生效,nginx -s reload

搭建https+nginx服务器的更多相关文章

  1. 搭建https本地服务器:如何得到被所有客户端认可的ssl证书

    https,作为http的加密版,作用还是很大的:能够提升网站搜索权重,让你的网站更安全,而且如果你的网站没有使用https的话,将无法作为移动设备原生应用的api接口.可见掌握为网站启用https的 ...

  2. [python][nginx][https] Nginx 服务器 SSL 证书安装部署

    目录 前言 1 申请证书 2 Nginx 服务器 SSL 证书安装部署 2.1.准备 Nginx 环境 2.2 证书部署 2.3 Nginx 配置 3 最后 参考链接 前言 博主博客中的图片,使用的是 ...

  3. Node.js 搭建 https 协议 服务器

    var https = require('https'); //创建服务器 https var fs = require('fs'); //文件系统的模块 const hostname = '127. ...

  4. Nginx服务器的使用与反向代理负载均衡

    目录 Nginx服务器 一:什么是Nginx? 什么是Nginx - Nginx与其他服努器的性能比较 二:如何在Linux中搭建Nginx服务器? 常见的错误 三:Nginx的反向代理和负载均衡 什 ...

  5. Nginx搭建https服务器

    HTTPS简介 HTTPS(Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单来讲就是HTTP的安全版.即H ...

  6. centos搭建https协议的tomcat和apache服务器以及nginx服务器,mysql php

    Apache HTTP Server(简称 Apache)是 Apache 软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的 Web ...

  7. 利用nginx搭建https服务器

    一.HTTPS简介 HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块.服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加 ...

  8. windows下搭建nginx服务器及实现nginx支持https配置流程

    最近刚接触到了tomcat结合nginx做网站的负载均衡.之前对tomcat搭配nginx实现负载均衡也写过,在上一篇的博客中,最近遇到的问题是要在http的基础上支持https.也就是支持加密的请求 ...

  9. 在阿里云服务器(ECS)上从零开始搭建nginx服务器

    本文介绍了如何在阿里云服务器上从零开始搭建nginx服务器.阿里云服务器(ECS)相信大家都不陌生,感兴趣的同学可以到http://www.aliyun.com/product/ecs去购买,或到体验 ...

随机推荐

  1. Django 之 富文本编辑器-tinymce

    这里的富文本编辑器以 tinymce 为例. 环境:ubuntu 16.04 + django 1.10 + python 2.7 ubuntu安装tinymce: python 2.7 $ sudo ...

  2. PowerDesigner15.1使用技巧总结

    1.  生成sql脚本 Database→Generate Database 选择要输出的文件路径,即文件存储路径,并根据需要修改文件名,单击确定后便会生成sql脚本.   在Options选项卡里, ...

  3. i2c接口笔记

    一. i2c基础知识 1. NACK信号:当在第9个时钟脉冲的时候SDA线保持高电平,就被定义为NACK信号.Master要么产生STOP条件来放弃这次传输,或者重复START条件来发起一个新的开始. ...

  4. 转 How do GraphQL remote schemas work

    文章转自 prisma 官方博客,写的很不错 In this article, we want to understand how we can use any existing GraphQL AP ...

  5. prisma middleware 简化 graphql resolver 编写的类库

      prisma 推出middleware 的目的就是保持resolver 的简洁 作用: 输入参数访问同一个resolver 决定resolver 最终的返回值 在resolver 连中捕获异常以及 ...

  6. fusionjs 学习二 核心概念

    核心概念 middleware 类似express 的中间件模型(实际上是构建在koa中间件模型上的),但是和koa 的中间件有差异 fusionjs 的中间件同时可以运行在浏览器页面加载的时候 se ...

  7. Maven与eclipse整合

    版权声明: https://blog.csdn.net/zdp072/article/details/37355993 一. 创建Java项目 第1步:首先导入前面命令行建立的两个maven项目Hel ...

  8. Trie树学习1

    Trie树.也称为字典数,前缀树,每一个单词的每一个字母依照顺序相应一个节点.有重合的前缀就共享节点. 理想情况下(满的情况).假若全部的单词都是N长,则树共同拥有N层,每层都是26个子节点. 在程序 ...

  9. HQL语句:三表查询(一对多,一对多)

    实体类:CrmDepartment package com.learning.crm.department.domain; import java.util.HashSet; import java. ...

  10. Oracle约束详解

    一 约束的定义 约束是强加在表上的规则或条件.确保数据库满足业务规则.保证数据的完整性.当对表进行DML或DDL操作时,如果此操作会造成表中的数据违反约束条件或规则的话,系统就会拒绝执行这个操作.约束 ...