Linux—— 配置ssl安全证书

news2024/9/24 11:22:03

一、实验设计

二、实验配置过程

[student@bogon ~]$ su - root
Password:
[root@bogon ~]# dnf -y install nginx
[root@bogon ~]# vim /etc/selinux/config
[root@bogon ~]# setenforce 0
[root@bogon ~]# systemctl stop firewalld
清空防火墙规则
[root@bogon ~]# iptables -F ^C // 9之前
[root@bogon ~]# nft flush ruleset //9之后
[root@bogon ~]# systemctl disable firewalld
Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service".
Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service".
[root@bogon ~]# systemctl ea
[root@bogon ~]# systemctl enable --now nginx.service
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service →
/usr/lib/systemd/system/nginx.service.
[root@bogon ~]# ps -elf | grep nginx
1 S root 7870 1 0 80 0 - 2810 sigsus 16:37 ?
00:00:00 nginx: master process /usr/sbin/nginx
5 S nginx 7871 7870 0 80 0 - 3891 ep_pol 16:37 ?
00:00:00 nginx: worker process
5 S nginx 7872 7870 0 80 0 - 3891 ep_pol 16:37 ?
00:00:00 nginx: worker process
0 R root 7874 6985 0 80 0 - 55450 - 16:38 pts/0
00:00:00 grep --color=auto nginx
[root@bogon ~]# cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf_$(date +%s)
[root@bogon ~]# vim /etc/nginx/nginx.conf
[root@bogon ~]# nginx -T

添加服务名称

生成日志文件和错误日志文件

[root@bogon ~]# ps -elf | grep nginx
1 S root 7870 1 0 80 0 - 2810 sigsus 16:37 ?
00:00:00 nginx: master process /usr/sbin/nginx
5 S nginx 7871 7870 0 80 0 - 3891 ep_pol 16:37 ?
00:00:00 nginx: worker process
5 S nginx 7872 7870 0 80 0 - 3891 ep_pol 16:37 ?
00:00:00 nginx: worker process
0 S root 8063 6985 0 80 0 - 55417 pipe_r 17:00 pts/0
00:00:00 grep --color=auto nginx
[root@bogon ~]# ps -elf | grep sshd
4 S root 1048 1 0 80 0 - 4181 do_sel 14:48 ?
00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
0 S root 8091 6985 0 80 0 - 55450 pipe_r 17:04 pts/0
00:00:00 grep --color=auto sshd
[root@bogon ~]# systemctl restart sshd
[root@bogon ~]# ps -elf | grep sshd
4 S root 8095 1 0 80 0 - 4181 do_sel 17:04 ?
00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
0 S root 8097 6985 0 80 0 - 55417 pipe_r 17:04 pts/0
00:00:00 grep --color=auto sshd
[root@bogon ~]# systemctl reload nginx
[root@bogon ~]# ps -elf | grep nginx
1 S root 7870 1 0 80 0 - 2842 sigsus 16:37 ?
00:00:00 nginx: master process /usr/sbin/nginx
5 S nginx 8103 7870 0 80 0 - 3927 ep_pol 17:05 ?
00:00:00 nginx: worker process
5 S nginx 8104 7870 0 80 0 - 3927 ep_pol 17:05 ?
00:00:00 nginx: worker process
0 S root 8106 6985 0 80 0 - 55417 pipe_r 17:05 pts/0
00:00:00 grep --color=auto nginx
[root@bogon ~]# echo "stuff for everyone" >> /usr/share/nginx/html/a.txt
[root@bogon ~]# echo "stuff not for everyone" >> /usr/share/nginx/html/b.txt
[root@bogon ~]# ll /usr/share/nginx/html/
total 20
-rw-r--r--. 1 root root 3971 Oct 17 2023 404.html
-rw-r--r--. 1 root root 4020 Oct 17 2023 50x.html
-rw-r--r--. 1 root root 19 Aug 26 17:08 a.txt
-rw-r--r--. 1 root root 23 Aug 26 17:08 b.txt
drwxr-xr-x. 2 root root 27 Aug 26 16:12 icons
lrwxrwxrwx. 1 root root 25 Oct 17 2023 index.html ->
../../testpage/index.html
-rw-r--r--. 1 root root 368 Oct 17 2023 nginx-logo.png
lrwxrwxrwx. 1 root root 14 Oct 17 2023 poweredby.png -> nginx-logo.png
lrwxrwxrwx. 1 root root 37 Oct 17 2023 system_noindex_logo.png ->
../../pixmaps/system-noindex-logo.png
[root@bogon ~]# curl -I http://127.0.0.1/a.txt
HTTP/1.1 200 OK
Server: nginx/1.20.1
Date: Mon, 26 Aug 2024 09:09:40 GMT
Content-Type: text/plain
Content-Length: 19
Last-Modified: Mon, 26 Aug 2024 09:08:45 GMT
Connection: keep-alive
ETag: "66cc461d-13"
Accept-Ranges: bytes
[root@bogon ~]# curl http://127.0.0.1/a.txt
stuff for everyone
[root@bogon ~]# curl -I http://127.0.0.1/b.txt
HTTP/1.1 200 OK
Server: nginx/1.20.1
Date: Mon, 26 Aug 2024 09:09:59 GMT
Content-Type: text/plain
Content-Length: 23
Last-Modified: Mon, 26 Aug 2024 09:08:54 GMT
Connection: keep-alive
ETag: "66cc4626-17"
Accept-Ranges: bytes
[root@bogon ~]# curl http://127.0.0.1/b.txt
stuff not for everyone
[root@bogon ~]# chmod a-r /usr/share/nginx/html/b.txt
[root@bogon ~]# ll /usr/share/nginx/html/*.txt
-rw-r--r--. 1 root root 19 Aug 26 17:08 /usr/share/nginx/html/a.txt
--w-------. 1 root root 23 Aug 26 17:08 /usr/share/nginx/html/b.txt
[root@bogon ~]# curl http://127.0.0.1/a.txt
stuff for everyone
[root@bogon ~]# curl http://127.0.0.1/b.txt
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.20.1</center>
</body>
</html>
[root@bogon ~]# chmod o+r /usr/share/nginx/html/b.txt
[root@bogon ~]# curl http://127.0.0.1/b.txt
stuff not for everyone
1. 配置自签证书,加固安全访问
生成CA根秘钥
openssl genrsa -des3 -out ca.key.pem 4096

 生成CA证书

openssl req -key ca.key.pem -new -x509 -days 3650 -sha256 -out ca.crt
生成服务器秘钥文件
openssl genpkey -out server.key -outpubkey server.pub -algorithm RSA -pkeyopt rsa_keygen_bits:2048 
生成服务器证书签名申请文件
openssl req -sha256 -new -key server.key -out server.csr
生成服务器证书
openssl x509 -req -days 3650 -CA ca.crt -CAkey ca.key.pem -CAcreateserial -in server.csr -out server.crt
查看服务器证书文件
openssl x509 -noout -text -in server.crt
自签证书的核心指令:
man openssl-req

三、实验过程整理

修改配置文件

[root@bogon ~]# mkdir -p /etc/pki/nginx
[root@bogon ~]# cd /etc/pki/nginx/
[root@bogon nginx]# mkdir private
[root@bogon nginx]# mkdir ca
[root@bogon nginx]# openssl genrsa -des3 -out ca/ca.key.pem 4096
省略输出
[root@bogon nginx]# openssl req -key ca/ca.key.pem -new -x509 -days 3650 -sha256 -out ca/ca.crt
省略输出
[root@bogon nginx]# openssl genpkey -out private/server.key -outpubkey private/server.pub -algorithm RSA -pkeyopt rsa_keygen_bits:2048
省略输出
[root@bogon nginx]# openssl req -sha256 -new -key private/server.key -out server.csr
省略输出
[root@bogon nginx]# openssl x509 -req -days 3650 -CA ca/ca.crt -CAkey ca/ca.key.pem -CAcreateserial -in server.csr -out server.crt
省略输出
[root@bogon nginx]# ls server.crt private/server.key
private/server.key server.crt
[root@bogon nginx]# chmod 400 private/server.key
[root@bogon nginx]# chown nginx private/server.key
[root@bogon nginx]# ll private/server.key
-r--------. 1 nginx root 1704 Aug 27 09:04 private/server.key
[root@bogon nginx]# systemctl reload nginx
[root@bogon nginx]# ss -anput | grep 443
tcp LISTEN 0 511 0.0.0.0:443 0.0.0.0:*
users:(("nginx",pid=2979,fd=17),("nginx",pid=2978,fd=17),
("nginx",pid=1022,fd=17))
[root@bogon nginx]# tail -f /var/log/nginx/error.log
2024/08/26 17:05:32 [notice] 8101#8101: signal process started
2024/08/27 09:10:18 [notice] 2977#2977: signal process started

nginx关于ssl 安全加固相关配置说明:

Configuring HTTPS serversicon-default.png?t=N7T8https://nginx.org/en/docs/http/configuring_https_servers.html

Nginx 配置文件中如何启用ssl 加固http服务

  1. 启用ssl listen 配置的端口号后面增加ssl 参数即可
  2. 启用ssl 后一定要配置证书和秘钥路径,否则在重启或者加载配置文件时会报错

     3.ssl_protocols ssl_cipher  协议版本和秘钥强度要求      示例配置文件展示的是默认值,一般不做配置

server {

    listen              443 ssl;

    server_name         www.example.com;

    ssl_certificate     www.example.com.crt;

    ssl_certificate_key www.example.com.key;

    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;

    ssl_ciphers         HIGH:!aNULL:!MD5;

    ...

}

nginx https 优化

  1. 增加工作进程数,工作进程数不能超过逻辑核心数量
  2. 增加ssl 连接的有效时间或者复用ssl 会话

worker_processes auto;

http {

    ssl_session_cache   shared:SSL:10m;

    ssl_session_timeout 10m;

    server {

        listen              443 ssl;

        server_name         www.example.com;

        keepalive_timeout   70;

        ssl_certificate     www.example.com.crt;

        ssl_certificate_key www.example.com.key;

        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;

        ssl_ciphers         HIGH:!aNULL:!MD5;

        ...

 

在配置基于同一IP地址端口号但是不同主机名的https时,nginx容易因为不同的虚拟主机使用相同的端口号和ip地址,而导致证书应用错误的情况出现吗,解决方案如下:

  1. 使用不同的IP地址运营不用的虚拟主机
  2. 可以配置不同的主机名的虚拟主机使用相同的证书
    1. 在申请证书时,提交一个域名和多个别名
    2. 再申请正式时,在主机名中使用通配符
  3. 启用SNI 功能也可以避免,需要注意的是,sni的使用取决于ssl的动态库中,是否有关的支持,因此出现如下提示代表nginx不支持SNI

nginx was built with SNI support, however, now it is linked

dynamically to an OpenSSL library which has no tlsext support,

therefore SNI is not available

阿里云服务器如何申请ssl证书说明:

产品概述_数字证书管理服务(原SSL证书)(SSL Certificate)-阿里云帮助中心icon-default.png?t=N7T8https://help.aliyun.com/zh/ssl-certificate/product-overview/?spm=a2c4g.11186623.0.0.4c993799RnLJat

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2081120.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CHARLS数据库挖掘系列教程(1)---数据库下载

CHARLS 是一项具备中国大陆 45 岁及以上人群代表性的追踪调查&#xff0c;旨在建设一个高质量的公共微观数据库&#xff0c;采集的信息涵盖社会经济状况和健康状况等多维度的信息&#xff0c;以满足老龄科学研究的需要。 为利用国际上最佳的数据采集方式&#xff0c;并确保研究…

YOLOv8实例分割推理流程及Python代码

1.YOLOv8_Seg推理流程 2.YOLOv8_Seg推理代码 3.全部代码 """ yolov8:目标检测推理代码 python """ import torch import cv2 import numpy as np import onnxruntime as ort import os import torch.nn.functional as F def xywh2xyxy(x):"…

【K8S 基本概念】Kubernets的架构和核心概念及集群搭建

一、Kubernets 1.作用&#xff1a;用于自动部署扩展以及管理容器化部署的应用程序&#xff0c;半开源&#xff0c;k8s的底层是基于谷歌go语言开发的&#xff0c;负责自动化运维管理多个容器化的应用的集群&#xff0c;容器编排框架的工具。现在使用的版本1.18-1.24&#xff0c…

开放式耳机怎么戴?佩戴舒适在线的几款开放式耳机分享

开放式耳机的佩戴方式与传统的入耳式耳机有所不同&#xff0c;它采用了一种挂耳式的设计&#xff0c;提供了一种新颖的佩戴体验&#xff0c;以下是开放式耳机的佩戴方式。 1. 开箱及外观&#xff1a;首先&#xff0c;从包装盒中取出耳机及其配件&#xff0c;包括耳机本体、充电…

java-Mybatis框架02

1.#{} 和${}区别 #{} 是占位符&#xff0c;是采用编译方式向sql中传值&#xff0c;可以防止sql注入&#xff0c;如果往sql中传值&#xff0c;使用#{}${} 是将内容直接拼接到sql语句中&#xff0c;一般不用于向sql中传值&#xff0c;一般用于向sql中动态传递列名。区别&#xff…

电控专业课程已开放

凌鸥学园旨在为电机控制爱好者提供学习交流成长平台&#xff0c;缓解电控行业人才缺口扩大趋势&#xff0c;共同打造繁荣行业生态。我们将全面整合LKS MCU相关资料&#xff0c;包括开发环境、应用笔记、教学视频、学习指导等&#xff0c;并设有专业课程。 通过凌鸥学园的专业体…

【RabbitMQ】快速上手

目 录 一. RabbitMQ 安装二. RabbitMQ 核心概念2.1 Producer 和 Consumer2.2 Connection 和 Channel2.3 Virtual host2.4 Queue2.5 Exchange2.6 RabbitMQ 工作流程 三. AMQP四. web界面操作4.1 用户相关操作4.2 虚拟主机相关操作 五. RabbitMQ 快速入门5.1 引入依赖5.2 编写生产…

简单的jar包解压class文件修改再编译成jar包

简单的jar包解压class文件修改再编译成jar包 1. 需求 我们公司有一个项目演示的环境&#xff0c;这个环境是我们公司其他组的项目&#xff0c;我们组只有这个项目的前端&#xff0c;jar&#xff0c;以及部分数据库结构表信息&#xff0c;现在我们已经启动服务可以正常访问&am…

Python中PDF文件的编辑与创建

目录 安装必要的库 编辑现有PDF文件 合并PDF文件 拆分PDF文件 添加水印 注意 创建新的PDF文件 使用reportlab创建PDF 使用Spire.PDF for Python创建PDF 结论 在数字化办公和学习环境中&#xff0c;PDF&#xff08;Portable Document Format&#xff09;文件因其跨平台…

【免费分享】1982-2015华北平原农田蒸散发数据集

华北平原是中国最重要的产粮基地之一&#xff0c;然而该地区水资源缺乏、供需矛盾突出。 在全球气候变化及用水需求日益增加的背景下&#xff0c; 该地区水循环过程变得愈加脆弱。 因此如何准确估算蒸散发、 掌握蒸散发的时空变化规律&#xff0c; 进而合理配置水资源、提高农业…

Lua收集请求日志

Kafka搭建 单机版的kafka搭建非常简单&#xff0c;不过我们今天采用Docker搭建kafka。Kafka使用Zookeeper存储Consumer、Broker信息&#xff0c;安装kafak的时候&#xff0c;需要先安装Zookeeper。 Zookeeper安装&#xff1a; docker run -d --name zookeeper -p 3181:3181 …

《网络安全自学指南》

《网络安全自学教程》 《网络安全自学》 1、网络协议安全1.1、OSI七层模型1.2、TCP/IP协议栈1.3、Wireshark使用1.4、802.1x协议1.5、ARP协议1.6、ARP欺骗1.7、IP协议1.8、ICMP协议1.9、TCP协议1.10、SYN Flood1.11、SSL协议1.12、HTTP协议1.13、DHCP协议 2、操作系统安全2.1、…

<数据集>TACO垃圾识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;6004张 标注数量(xml文件个数)&#xff1a;6004 标注数量(txt文件个数)&#xff1a;6004 标注类别数&#xff1a;18 标注类别名称&#xff1a;[Crankshaft, Centrifugal_body, Washer_container, Circlip_containe…

保存和加载工作区变量

目录 保存工作区变量 加载工作区变量 查看 MAT 文件的内容 在 MATLAB 会话之间并不保留工作区。退出 MATLAB 时&#xff0c;工作区清除。但是&#xff0c;您可以将当前工作区中的任何或所有变量保存到 MAT 文件(.mat)中。之后&#xff0c;只需加载保存的 MAT 文件&#xff0…

工业设备定位激光器在工业领域的应用

在日新月异的工业制造领域&#xff0c;技术的每一次飞跃都深刻影响着生产效率和产品质量的双重提升。其中&#xff0c;工业设备定位激光器作为现代工业自动化的核心元件之一&#xff0c;正以其高精度、高效率和广泛的应用范围&#xff0c;引领着制造业的智能化转型。接下来给大…

<PLC><算法>使用汇川eazy521系列PLC,如何使用LiteST语言对乱序数组进行排序?(冒泡法)

前言 本系列是关于PLC相关的博文&#xff0c;包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。 PLC品牌包括但不限于西门子、三菱等国外品牌&#xff0c;汇川、信捷等国内品牌。 除了PLC为主要内容外&#xff0c;PLC相关元器件如触摸屏…

NS4054H 40V 高耐压线性锂离子电池充电管理 IC

1 特性  最大输入电压&#xff1a; 40V  输入过压保护电压&#xff1a; 6V  内置输入过流保护&#xff1a; 1A  支持 0V 电池电压充电  充电电流可编程  4.2V 充电浮充阈值电压  电池待机电流&#xff1c; 1uA  内置 C/10 充满截止功能 …

数据结构-manacher算法

第一种情况: 以t为中心&#xff0c;他的回文串为abedeks, 同时i’的回文为ede&#xff0c;那么i的回文也是ede。 第二种情况:以s为中心的回文串为 tabkdedk,而以i’为中心的回文串为abkde&#xff0c;已不再L和R之间。此时以i为中心的回文串就为kdedk. 第三种情况: 以t为中心…

书生大模型实战营第三期基础岛第六课——OpenCompass 评测 InternLM-1.8B 实践

OpenCompass 评测 InternLM-1.8B 实践 基础作业:创建虚拟环境下载并安装opencompass安装相关依赖复制测评数据集到当前目录下并解压测评前环境变量配置使用命令行配置参数法进行评测 基础作业: 使用 OpenCompass 评测 internlm2-chat-1.8b 模型在 ceval 数据集上的性能&#x…

强化学习,第 4 部分:蒙特卡洛控制

目录 一、介绍 1.1 强化学习 2.1 关于此文章 三、ε贪婪策略 四、蒙特卡洛控制 4.1 基本原理 4.2 举个例子 五、On-policy & off-policy 方法 六、重要性采样 6.1 赋予动机 6.2 想法 6.3 应用 七、增量实施 7.1 增量的理论 7.2 常α MC 八、结论 一、介绍 …