当前位置:   article > 正文

Nginx解决通过openssl自签名证书访问Https报不安全告警的问题_自签名的证书如何能让浏览器不报警告呢?

自签名的证书如何能让浏览器不报警告呢?
Nginx解决通过openssl自签名证书访问Https报不安全告警的问题
  • 一、Nginx访问自签ssl证书存在https报不安全告警
  • 二、处理步骤
  • * 1.生成根证书私钥和根证书
    
    • 1
    • 2.生成自签名证书私钥 -out private.key
    • 3.根据自签名证书私钥生成自签名证书申请文件 -out private.csr
    • 4.定义自签名证书扩展文件(解决chrome安全告警)
    • 5.生成自签名证书 -out private.crt
    • 6.配置nginx
    • 7.把该证书CA-certificate.crt安装到受信任的根证书颁发机构下,即可从浏览器正常访问https的对应网址且不会报不安全警告。

一、Nginx访问自签ssl证书存在https报不安全告警

nginx代理设置自签ssl证书并进行https方式访问,浏览器中会报不安全的告警,记录一下处理过程

本文内容摘自CSDN博主「Dylanu」的原创文章
解决https网站通过nginx+openssl自签名证书访问,在谷歌浏览器报不安全告警的问题

二、处理步骤

1.生成根证书私钥和根证书

使用指定-subj “/C=CN/ST=MyProvince/L=MyCity/O=MyOrganization”,生成根证书私钥和根证书

openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -subj "/C=CN/ST=MyProvince/L=MyCity/O=MyOrganization" -keyout CA-private.key -out CA-certificate.crt -reqexts v3_req -extensions v3_ca

###示例:生成100年的
openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -subj "/C=CN/ST=guangdong/L=guangzhou/O=gzsendi" -keyout CA-private.key -out CA-certificate.crt -reqexts v3_req -extensions v3_ca
  • 1
  • 2
  • 3
  • 4

2.生成自签名证书私钥 -out private.key

openssl genrsa -out private.key 2048

###示例:
openssl genrsa -out private.key 2048
  • 1
  • 2
  • 3
  • 4

3.根据自签名证书私钥生成自签名证书申请文件 -out private.csr

####命令:
openssl req -new -key private.key -subj "/C=CN/ST=MyProvince/L=MyCity/O=MyOrganization/CN=192.168.56.101" -sha256 -out private.csr

###示例:
openssl req -new -key private.key -subj "/C=CN/ST=guangdong/L=guangzhou/O=gzsendi/CN=192.168.56.101" -sha256 -out private.csr
  • 1
  • 2
  • 3
  • 4
  • 5

4.定义自签名证书扩展文件(解决chrome安全告警)

定义自签名证书扩展文件(解决chrome安全告警)。在默认情况下生成的证书一旦选择信任,在 Edge, Firefox
等浏览器都显示为安全,但是Chrome仍然会标记为不安全并警告拦截,这是因为 Chrome 需要证书支持扩展 Subject Alternative
Name, 因此生成时需要特别指定 SAN 扩展并添加相关参数,将下述内容放到一个文件中,命名为private.ext

cat > private.ext << EOF
[ req ]
default_bits        = 1024
distinguished_name  = req_distinguished_name
req_extensions      = san
extensions          = san
[ req_distinguished_name ]
countryName         = CN
stateOrProvinceName = Definesys
localityName        = Definesys
organizationName    = Definesys
[SAN]
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = IP:192.168.56.101
EOF
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

5.生成自签名证书 -out private.crt

根据根证书私钥及根证书-CA CA-certificate.crt -CAkey CA-private.key、自签名证书申请文件 -in
private.csr、自签名证书扩展文件 -extfile private.ext,生成自签名证书 -out private.crt

##命令,设置100年的证书有效期
openssl x509 -req -days 36500 -in private.csr -CA CA-certificate.crt -CAkey CA-private.key -CAcreateserial -sha256 -out private.crt -extfile private.ext -extensions SAN
  • 1
  • 2

6.配置nginx

将上面生成的private.crt和private.key放在nginx下的ssl目录(ssl可以自己建立,然后放置对应的文件)。

示例如:

    server {
        listen       8443 ssl;
        server_name  localhost;

        ssl_certificate      /home/testuser/nginx/ssl/private.crt;
        ssl_certificate_key  /home/testuser/nginx/ssl/private.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            proxy_pass http://127.0.0.1:8080/;
            proxy_connect_timeout 30;
            proxy_http_version 1.1;
            proxy_send_timeout 300;
            proxy_read_timeout 300;
            proxy_set_header            Host $host:$server_port;
            proxy_redirect      off;
            proxy_set_header    X-Real-IP        $remote_addr;
            proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
        
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

7.把该证书CA-certificate.crt安装到受信任的根证书颁发机构下,即可从浏览器正常访问https的对应网址且不会报不安全警告。

接下来我将给各位同学划分一张学习计划表!

学习计划

那么问题又来了,作为萌新小白,我应该先学什么,再学什么?
既然你都问的这么直白了,我就告诉你,零基础应该从什么开始学起:

阶段一:初级网络安全工程师

接下来我将给大家安排一个为期1个月的网络安全初级计划,当你学完后,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web渗透、安全服务、安全分析等岗位;其中,如果你等保模块学的好,还可以从事等保工程师。

综合薪资区间6k~15k

1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(1周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(1周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(1周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

那么,到此为止,已经耗时1个月左右。你已经成功成为了一名“脚本小子”。那么你还想接着往下探索吗?

阶段二:中级or高级网络安全工程师(看自己能力)

综合薪资区间15k~30k

7、脚本编程学习(4周)
在网络安全领域。是否具备编程能力是“脚本小子”和真正网络安全工程师的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力。

零基础入门的同学,我建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习
搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP,IDE强烈推荐Sublime;

Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,没必要看完

用Python编写漏洞的exp,然后写一个简单的网络爬虫

PHP基本语法学习并书写一个简单的博客系统

熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选)

了解Bootstrap的布局或者CSS。

阶段三:顶级网络安全工程师

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/662158
推荐阅读
相关标签