Nginx配置HTTPS证书网站

简介: 前提:    1、主机需要先安装openssl    2、编译安装nginx时,要加上--with-http_ssl_module  这个ssl模块现在开始配置:(我当时配置时,主机已安装了openssl,但编译时没有加载http_s...

前提:

    1、主机需要先安装openssl

    2、编译安装nginx时,要加上--with-http_ssl_module  这个ssl模块

现在开始配置:(我当时配置时,主机已安装了openssl,但编译时没有加载http_ssl_module模块,所以后面会报错,这里详解说明下)

1、生成自签字证书

复制代码
 1 [root@localhost /]# openssl req -new -x509 -keyout /root/ca.key -out /root/ca.crt
 2 Generating a 2048 bit RSA private key
 3 .............................+++
 4 .......................................................................................................................+++
 5 writing new private key to '/root/ca.key'
 6 Enter PEM pass phrase:           #输入密钥保护密码
 7 Verifying - Enter PEM pass phrase:       #确认密钥保护密码
 8 -----
 9 You are about to be asked to enter information that will be incorporated
10 into your certificate request.
11 What you are about to enter is what is called a Distinguished Name or a DN.
12 There are quite a few fields but you can leave some blank
13 For some fields there will be a default value,
14 If you enter '.', the field will be left blank.
15 -----
16 Country Name (2 letter code) [XX]:CN
17 State or Province Name (full name) []:xian
18 Locality Name (eg, city) [Default City]:xian
19 Organization Name (eg, company) [Default Company Ltd]:learn
20 Organizational Unit Name (eg, section) []:it
21 Common Name (eg, your name or your server's hostname) []:learner
22 Email Address []:ying@126.com
复制代码

回车结束

2、修改配置文件openssl.cnf (注意:修改前,先备份下)

复制代码
[root@localhost /]# vi /etc/pki/tls/openssl.cnf

####################################################################
[ ca ]
default_ca      = CA_default            # The default ca section

####################################################################
[ CA_default ]

dir             = /etc/pki/CA           # Where everything is kept #证书的根目录,要记住这个目录
certs           = $dir/certs            # Where the issued certs are kept
crl_dir         = $dir/crl              # Where the issued crl are kept
database        = $dir/index.txt        # database index file.
#unique_subject = no                    # Set to 'no' to allow creation of
                                        # several ctificates with same subject.
new_certs_dir   = $dir/newcerts         # default place for new certs.

certificate     = $dir/ca.crt           # The CA certificate  # 修改这里,表示签名时使用的证书 
serial          = $dir/serial           # The current serial number
crlnumber       = $dir/crlnumber        # the current crl number
                                        # must be commented out to leave a V1 CRL
crl             = $dir/crl.pem          # The current CRL
private_key     = $dir/private/cakey.pem# The private key
RANDFILE        = $dir/private/.rand    # private random number file
复制代码

3、复制证书到证书根目录/etc/pki/CA下,并在该目录下创建空文件index.txt和serial,并向serial输入”01“

复制代码
1 [root@localhost ~]# cd /etc/pki/CA/
2 [root@localhost CA]# cp /root/ca.crt .
3 [root@localhost CA]# ls
4 ca.crt  certs  crl  newcerts  private
5 [root@localhost CA]# touch index.txt
6 [root@localhost CA]# touch serial
7 [root@localhost CA]# echo "01" >serial
复制代码

4、生成服务器RSA私钥/root/server.key

复制代码
1 [root@localhost ~]# openssl genrsa -des3 -out /root/server.key 1024
2 Generating RSA private key, 1024 bit long modulus
3 .............++++++
4 .++++++
5 e is 65537 (0x10001)
6 Enter pass phrase for /root/server.key: #设置此密钥的保护密码
7 Verifying - Enter pass phrase for /root/server.key: #确认设置此密钥的保护密码
复制代码

5、为私钥去除口令---公钥

1 [root@localhost ~]# openssl rsa -in /root/server.key -out /root/server_nopwd.key
2 Enter pass phrase for /root/server.key: #输入第4步生成的密钥的保护密码 
3 writing RSA key

6、生成证书请求文件/root/server.csr

复制代码
 1 [root@localhost ~]# openssl req -new -key /root/server.key -out /root/server.csr
 2 Enter pass phrase for /root/server.key:  #输入第4步生成的密钥的保护密码 
 3 You are about to be asked to enter information that will be incorporated
 4 into your certificate request.
 5 What you are about to enter is what is called a Distinguished Name or a DN.
 6 There are quite a few fields but you can leave some blank
 7 For some fields there will be a default value,
 8 If you enter '.', the field will be left blank.
 9 --------下面这部分应该和创建私有证书时填的一样------------------------ 
10 Country Name (2 letter code) [XX]:CN
11 State or Province Name (full name) []:xian
12 Locality Name (eg, city) [Default City]:xian
13 Organization Name (eg, company) [Default Company Ltd]:learn
14 Organizational Unit Name (eg, section) []:it
15 Common Name (eg, your name or your server's hostname) []:learner
16 Email Address []:ying@126.com
17 ---------------------------------------------------------------- 
18 Please enter the following 'extra' attributes
19 to be sent with your certificate request
20 A challenge password []:111111
21 An optional company name []:learn
复制代码

7、用私有证书给证书请求文件/root/server.csr签名

复制代码
 1 [root@localhost ~]# openssl ca -in /root/server.csr -out /root/server.crt -cert /root/ca.crt -keyfile /root/ca.key -config /etc/pki/tls/openssl.cnf
 2 Using configuration from /etc/pki/tls/openssl.cnf
 3 Enter pass phrase for /root/ca.key: #输入第1步生成的密钥的保护密码
 4 Check that the request matches the signature
 5 Signature ok
 6 Certificate Details:
 7         Serial Number: 1 (0x1)
 8         Validity
 9             Not Before: Nov 17 07:47:05 2016 GMT
10             Not After : Nov 17 07:47:05 2017 GMT
11         Subject:
12             countryName               = CN
13             stateOrProvinceName       = xian
14             organizationName          = learn
15             organizationalUnitName    = it
16             commonName                = learner
17             emailAddress              = ying@126.com
18         X509v3 extensions:
19             X509v3 Basic Constraints:
20                 CA:FALSE
21             Netscape Comment:
22                 OpenSSL Generated Certificate
23             X509v3 Subject Key Identifier:
24                 8A:70:77:B0:32:42:49:AF:85:AD:79:C3:36:1F:43:A5:C5:01:15:E2
25             X509v3 Authority Key Identifier:
26                 keyid:83:10:7A:45:18:47:D2:27:F8:A0:81:C8:FE:A8:53:9A:1E:BC:D3:77
27 
28 Certificate is to be certified until Nov 17 07:47:05 2017 GMT (365 days)
29 Sign the certificate? [y/n]:y
30 
31 
32 1 out of 1 certificate requests certified, commit? [y/n]y
33 Write out database with 1 new entries
34 Data Base Updated
复制代码

8、编辑nginx配置文件/usr/local/nginx/conf/nginx.conf

复制代码
 1 server {
 2          listen       8001 ssl;
 3          server_name  x.x.x.x:8001; 
 4 
 5          ssl    on;
 6          ssl_certificate /root/server.crt;
 7          ssl_certificate_key /root/server_nopwd.key;
 8 
 9          location / {
10              root   /var/www/html;
11              index  index.html index.htm;
12          }
13     }
复制代码

9. 重启服务

1 [root@localhost sbin]# ./nginx -s reload

~~~~完成,在客户端上输入https://x.x.x.x:8001/即可访问成功。

当时由于安装nginx时,未编译http_ssl_module模块,导致nginx重启失败------提示:nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/ng.........

所以需要重新编译nginx来添加需要的模块。

 

Nginx重新编译添加模块

1. 找到安装nginx的源码根目录(即安装包存放目录),如果没有的话下载新的源码并解压

1 [root@localhost /]# cd software
2 [root@localhost software]# ls
3 nginx-1.10.2  nginx-1.10.2.tar.gz

 

2. 查看nginx版本极其编译参数

/usr/local/nginx/sbin/nginx -V

 

3. 进入nginx源码目录

1 [root@localhost software]# cd nginx-1.10.2

 

4.重新编译的代码和模块

[root@localhost nginx-1.10.2]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module

 

5.  make下 (注意:千万别make install,否则就覆盖安装了),make完之后在/software/nginx-1.10.2/objs目录下就多了个nginx,这个就是新版本的程序了

6. 备份旧的nginx程序

1 [root@localhost ~]# cd /usr/local/nginx/sbin/
2 [root@localhost sbin]# ls
3 nginx
4 [root@localhost sbin]# cp nginx nginx_back_by_zhang20161117
5 [root@localhost sbin]# ls
6 nginx  nginx_back_by_zhang20161117

7. 删除旧的nginx程序,并把新的nginx程序复制到/usr/local/nginx/sbin/下

1 [root@localhost sbin]# rm nginx
2 rm:是否删除普通文件 "nginx"?y
3 [root@localhost sbin]# cp /software/nginx-1.10.2/objs/nginx /usr/local/nginx/sbin/

8. 测试新的nginx程序是否正确

1 [root@localhost sbin]# /usr/local/nginx/sbin/nginx -t
2 nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
3 nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

9. 平滑启动服务 (非必须)

1 [root@localhost sbin]# /usr/local/nginx/sbin/nginx -s reload

10. 查看模块是否已安装 (非必须)

1 [root@localhost sbin]# /usr/local/nginx/sbin/nginx -V
2 nginx version: nginx/1.10.2
3 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
4 built with OpenSSL 1.0.1e-fips 11 Feb 2013
5 TLS SNI support enabled
6 configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module

11. 重启 

1 [root@localhost sbin]# ./nginx -s quit
2 [root@localhost sbin]# ./nginx

nginx重新加载模块完成!

 

apache配置https 参考: http://ask.apelearn.com/question/1029

目录
相关文章
解析:HTTPS通过SSL/TLS证书加密的原理与逻辑
HTTPS通过SSL/TLS证书加密,结合对称与非对称加密及数字证书验证实现安全通信。首先,服务器发送含公钥的数字证书,客户端验证其合法性后生成随机数并用公钥加密发送给服务器,双方据此生成相同的对称密钥。后续通信使用对称加密确保高效性和安全性。同时,数字证书验证服务器身份,防止中间人攻击;哈希算法和数字签名确保数据完整性,防止篡改。整个流程保障了身份认证、数据加密和完整性保护。
HTTPS 证书自动化运维:基础知识与重要性
随着互联网发展,HTTPS 成为保护网站和用户数据安全的标准协议。HTTPS 证书(SSL/TLS)验证网站身份并加密通信,分为 DV、OV 和 EV 三种类型,确保数据传输安全。它不仅提高安全性、增强用户信任,还能提升搜索引擎排名。手动管理证书繁琐易错,自动化运维工具如 Let`s Encrypt 和 Certbot 可简化流程,减少错误,提高效率。文章介绍了 HTTPS 证书的基础知识、重要性及自动化运维的概念。
HTTPS证书类型和品牌一览
HTTPS证书(SSL证书)是保障网站数据传输安全与身份可信认证的重要工具,适用于电商、企业官网等各类平台。证书主要分为DV(域名验证)、OV(企业验证)、EV(扩展验证)三种安全级别,以及单域名、通配符、多域名等不同覆盖类型。品牌方面,既有高性价比的国产锐安信、CFCA,也有国际知名的Sectigo、Digicert。
HTTPS 证书自动化运维:https证书管理系统- 自动化监控
本文介绍如何设置和查看域名或证书监控。步骤1:根据证书状态选择新增域名或证书监控,线上部署推荐域名监控,未部署选择证书监控。步骤2:查询监控记录详情。步骤3:在详情页查看每日定时检测结果或手动测试。
HTTPS 证书自动化运维:https证书管理系统- 自动化监控
HTTPS 证书自动化运维:https证书管理系统-自动化部署
本指南介绍如何部署Linux服务器节点。首先复制生成的Linux脚本命令,然后将其粘贴到目标服务器上运行。接着刷新页面查看节点记录,并点击“配置证书”选择证书以自动部署。最后,节点部署完成,后续将自动调度,无需人工干预。
HTTPS 证书自动化运维:https证书管理系统-自动化部署
HTTPS 证书自动化运维:https证书管理系统之自动化签发
通过访问【https://www.lingyanspace.com】注册账户,进入证书服务菜单并新增证书。填写域名(单域名、多域名或泛域名),创建订单后添加云解析DNS记录进行质检。确认完成后可下载证书,并支持后续查看、更新和定时更新功能。证书过期前15天自动更新,需配置邮箱接收通知。
HTTPS 证书自动化运维:https证书管理系统之自动化签发
HTTPS 证书自动化运维:展望未来发展趋势
HTTPS证书自动化运维正朝着更智能、高效和安全的方向发展。未来系统将提升自动化程度,减少人工干预,实现自动签发、续订与部署;深度集成多云平台,提供无缝管理体验;增强高级安全功能如加密算法和威胁检测;优化用户界面,降低使用门槛;支持更多操作系统,确保跨平台一致性;引入AI/ML技术,预测需求并自动解决问题;加强标准化与互操作性,促进生态系统协作。同时,系统将持续扩展功能、优化性能、支持国际化,并注重用户反馈,为全球用户提供优质的证书管理服务。
HTTPS 证书自动化运维:HTTPS 证书管理系统之使用指南
本文详细介绍【灵燕空间HTTPS证书管理系统】(https://www.lingyanspace.com)的配置与使用,涵盖注册账户、邮箱配置及证书自动签发、监控和部署的一体化指南。通过页面顶部菜单的【视频教程】和【图文教程】,帮助用户从注册到实际应用全面掌握系统操作。最新迭代后,泛域名证书已包含根域名,无需额外申请多域名证书。
IP地址https证书最新申请流程步骤
确保信息准确,遵循CA指导,遇到问题可联系客服。
没有域名只有IP地址怎么申请https证书?
IP 地址 SSL 证书是一种特殊的 SSL/TLS 证书,允许直接为 IP 地址配置 HTTPS 加密,适用于内部服务、私有网络和无域名的设备管理。与基于域名的证书不同,申请过程较为复杂,需选择支持 IP 的证书颁发机构(CA),并完成额外的身份验证步骤。浏览器对 IP 地址的支持有限,可能会显示警告。通过正确配置服务器(如 Nginx 或 Apache),可以确保通信安全。