使用自签发证书实现Nginx HTTPS

 为了互联网安全HTTS化势在必行,但是证书首先需要花钱购买,虽然有很多免费证书可以申请,但而且还必须要有个域名才能通过验证。实际中我们有一些内部的系统或者某些测试环境没有域名或者无需设置域名,这种情况下如何使用HTTPS呢,那就是本文虫虫要给大家介绍的自签名证书方式。

[[262081]]

安装升级openSSL

OpenSSL是整个底层加密算法库和工具的基础。

我们的Web服务器要依赖它的类库来实现SSL/TSL模块和HTTPS的工作。在签发证书时候也需要使用OpenSSL。在自签名生成时候,我们可以使用其他更加专业的软件,比如GPG,关于GPG使用我们以前文章中介绍过,大家可以参考历史文章。本文为了方便,证书的签发都用OpenSSL。

由于OpenSSL升级可能影响很多软件,我们先不直接升级,而生成一个新版本的OpenSSL在/usr/local/ssl目录,这样不影响已有有版本的其他软件。

首先下载新版本的OpenSSL,为了兼容我们选择1.0.2系列版本:

  1. wget Url --no-check-certificate 
  2. tar -zxvf openssl-*.tar.gz 
  3. cd openssl-* 
  4. ./config -fpic shared && make && make install 
  5. echo "/usr/local/ssl/lib" >> /etc/ld.so.conf 
  6. ldconfig 

生成自签名证书

子签名证书的使用商用证书一样,不过证书需要自己生成。首先确保OpenSSL升级到新版本,或者通过yum update openssl升级确保解决已有的ssl漏洞。

  1. mkdir /etc/ssl 
  2. chmod 700 /etc/ssl 
  3. /usr/local/openssl/bin/openssl req -newkey rsa:2048 -nodes -keyout /etc/ssl/rsa_private.key -x509 -days 888 -out cert.crt -subj /C=CN/ST=BJ/L=CY/O=CC/OU=OP/CN=Chongchong/[email protected] 

为了避免创建证书过程中的交互式信息填写,我们此处使用-subj参数指定了一些参数,实际使用中可以根据需要自己设置:

 

 

C=CN ← 国家代号,中国输入CN

ST=BJ ← 州(省)名

L=CY ← 所在地市的名称

O=CC ← 组织或者公司名称

OU=OP ← 部门名称

CN=Chongchong ← 通用名,可以是服务器域控名称,或者个人的名字

[email protected] ← 管理邮箱名

会生成网站私钥rsa_private.key和网站证书cert.crt都准备完毕。证书的验证可以在设置成功后。为了证书安全设置权限:

chmod 600 /etc/ssl/*

Nginx HTTPS安全配置

确保nginx使用新版本的nginx(目前版本为1.15.11,1.12.2),如果系统是用的其他应用服务器,一般做法是给新增加nginx做为反向代理,代理到应用服务器,比如tomcat,然后在Nginx反向代理商配置https。

新开一个虚拟主机,并在server{ .. . }段中设置:

注意nginx新语法中已经不使用ssl on;而是在listen语句中添加ssl;443为默认https端口,根据实际情况修改为别的。

listen *:443 ssl;

  1. ssl_certificate / etc/ssl/cert.crt; 
  2. ssl_certificate_key / etc/ssl/rsa_private.key
  3. ssl_protocols TLSv1.2; 
  4. ssl_prefer_server_ciphers on
  5. ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"
  6. ssl_ecdh_curve secp384r1; 
  7. ssl_session_cache shared:SSL:10m; 
  8. ssl_session_tickets off
  9. add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"

其中的路径是刚刚生成的网站证书的路径。根据网站实际情况配置可能有差异,我们可以使用Mozilla的服务器端TLS配置在线生成器,这个我们以前的文章中也提到过:

 

 

配置完成后,使用nginx命令检测配置和重新加载Nginx:

检测配置:

  1. nginx -t 

重新加载:

  1. nginx -s reload 

Nginx优化配置

优化Nginx性能

在http{.. .}中加入:

  1. ssl_session_cache shared:SSL:10m; 
  2. ssl_session_timeout 10m; 

增加session缓存可以提高nginx处理https的性能。

在配置https的虚拟主机server{.. .}中加入:

  1. keepalive_timeout 70; 

设置超时,可以由于超时导致等待导致性能问题

fastcgi ssl配置

有时候启用https后,有些php程序认证通过后,出现跳转页面错误错误,跳转到http导致问题。

解决方法是定位至”location ~ .*.(php|php5)?${}”在include fcgi.conf;或者在fastcgi_param配置后面加上:

  1. fastcgi_param HTTPS on
  2. fastcgi_param HTTP_SCHEME https; 

浏览器添加网站信任

使用自签名的https证书,默认浏览器是拒绝访问的,需要把该网站添加到浏览器信任列表才能访问。

添加信任的方法:

firefox

点击高级,将要访问url添加到信任即可:

 

 

Chrome

Chrome设置类似,点击高级

 

 

点击继续前往

 

 

证书验证

查看我们自签名的证书信息:

 

 

和第二部我们生成证书时候设置的参数一致。

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/149223.html<

(0)
管理的头像管理
上一篇2025-03-12 12:38
下一篇 2025-03-12 12:39

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注