如何利用TLS/SSL与防火墙规则保护CoreOS集群

【网络安全】网络安全协议和防火墙 至今为止,大多数部署的 IDS 主要是基于特征的。但事实是不可能阻止所有的入侵行为,有必要采取措施在入侵已经开始,但还没有造成危害或在造成更大危害前,及时检测到入侵,以便尽快阻止入侵,把危害降低到最小。例如,一个邮件网关在检查每一个邮件时,会根据邮件地址,或邮件的其他首部,甚至是报文的内容(如,有没有“导弹”“核弹头”等关键词)来确定该邮件能否通过防火墙。只有使用不加密的 IP首部,互联网中的各个路由器才能识别 IP 首部中的有关信息,把 IP安全数据报在不安全的互联网中进行转发,从源点安全地转发到终点。 阅读详情

提供:ZStack云计算

系列教程

本教程为CoreOS上手指南系列九篇中的第九篇。

内容介绍

如果大家需要在控制外网络环境中运行CoreOS集群,例如立足于共享数据中心或者公共互联网,则需要注意一点——etcd利用未加密HTTP请求进行通信。我们可以在集群内对每个节点进行IPTables防火墙配置,从而消除这一风险。但更为彻底的解决手段则是使用加密传输层。

幸运的是,etcd支持对等TLS/SSL连接,这意味着集群中各成员节点皆经过验证,且全部通信皆经过加密。在本教程中,我们将配置一套三节点集群,而后在各设备上配置HTTPS端点与基础防火墙。

先决条件

本教程会涉及大量CoreOS系统组件概念,大家可能也需要参阅如何在DigitalOcean上设置CoreOS集群。

大家应当熟悉etcd、fleetctl、cloud-config文件并生成一条发现URL。

为了在集群中创建并访问各设备,大家需要使用与DigitalOcean账户相关联的SSH公钥。欲了解更多与之相关的信息,请参阅本篇教程。

如果大家希望使用DigitalOcean构建自己的CoreOS集群,可参阅此教程以了解如何通过写入权限生成并使用个人访问令牌。大家也可以选择使用API,从长远角度看,这种作法有助于在大规模集群内节约管理时间。

生成一条新的发现URL

大家可以在浏览器内访问https://discovery.etcd.io/new?size=3以检索新的discovery URL,复制显示的URL或者直接在本地设备上使用curl命令:

保存返回的URL,我们将在后面的cloud-config中加以使用。

编写包含HTTPS配置的Cloud-Config文件

首先从编写cloud-config开始。此文件在服务器初始化时作为用户数据使用,负责定义集群的各重要配置细节。文件内容较长,但却并不复杂。具体请参阅基础集群指南。我们将要求fleet明确使用HTTPS端点,同时启用imptables-restore服务作为防火墙,而后编写配置文件以告知etcd与fleet在哪里找到SSL证书。

在本地设备上打开终端,确保位于主目录下,使用nano创建并打开~/cloud-config.yml文件:

  • cd ~

  • nano cloud-config.yml

粘贴以下内容,而后将etcd2部分内的https://discovery.etcd.io/token变更为大家在上一部分中声明的发现URL。

如果不需要防火墙,大家也可以移除iptables-restore部分。

请注意粘贴时保留缩进。由于cloud-config由YAML写成,其中的空格数非常重要。查看文件内的注释以了解各行含义,我们将强调其中的部分内容。

~/cloud-config.yml

#cloud-config

coreos:
  etcd2:
    # generate a new token for each unique cluster from https://discovery.etcd.io/new:
    discovery: https://discovery.etcd.io/token
    # multi-region deployments, multi-cloud deployments, and Droplets without
    # private networking need to use $public_ipv4:
    advertise-client-urls: https://$private_ipv4:2379,https://$private_ipv4:4001
    initial-advertise-peer-urls: https://$private_ipv4:2380
    # listen on the official ports 2379, 2380 and one legacy port 4001:
    listen-client-urls: https://0.0.0.0:2379,https://0.0.0.0:4001
    listen-peer-urls: https://$private_ipv4:2380
  fleet:
    # fleet defaults to plain HTTP - explicitly tell it to use HTTPS on port 4001:
    etcd_servers: https://$private_ipv4:4001
    public-ip: $private_ipv4   # used for fleetctl ssh command
  units:
    - name: etcd2.service
      command: start
    - name: fleet.service
      command: start
    # enable and start iptables-restore- name: iptables-restore.serviceenable: truecommand: start
write_files:
  # tell etcd2 and fleet where our certificates are going to live:
  - path: /run/systemd/system/etcd2.service.d/30-certificates.conf
    permissions: 0644
    content: |
      [Service]
      # client environment variables
      Environment=ETCD_CA_FILE=/home/core/ca.pem
      Environment=ETCD_CERT_FILE=/home/core/coreos.pem
      Environment=ETCD_KEY_FILE=/home/core/coreos-key.pem
      # peer environment variables
      Environment=ETCD_PEER_CA_FILE=/home/core/ca.pem
      Environment=ETCD_PEER_CERT_FILE=/home/core/coreos.pem
      Environment=ETCD_PEER_KEY_FILE=/home/core/coreos-key.pem
  - path: /run/systemd/system/fleet.service.d/30-certificates.conf
    permissions: 0644
    content: |
      [Service]
      # client auth certs
      Environment=FLEET_ETCD_CAFILE=/home/core/ca.pem
      Environment=FLEET_ETCD_CERTFILE=/home/core/coreos.pem
      Environment=FLEET_ETCD_KEYFILE=/home/core/coreos-key.pem

作为可选步骤,大家也可以将cloud-config粘贴至官方官方CoreOS云配置验证当中,而后按下Validate Cloud-Config。

保存并退出。

下面来看cloud-init.yml文件中的重要部分。首先是fleet值:

  fleet:
    # fleet defaults to plain HTTP - explicitly tell it to use HTTPS:
    etcd_servers: https://$private_ipv4:4001
    public-ip: $private_ipv4   # used for fleetctl ssh command

注意,etcd_servers被设定为一条https URL。对于普通HTTP操作,此值不需要额外设置。不过如果不经特别调整,HTTPS将无法实现。($private_ipv4是一条CoreOS初始化流程中的变量,这里不需要变更。)

下面,我们来看write_files部分。其值被拆分为一条文件系统路径、权限掩码以及文件内容。在这里,我们为etcd2与fleet服务指定systemd单元文件,从而设置其环境变量以指定我们生成的TLS/SSL证书:

write_files:
  # tell etcd2 and fleet where our certificates are going to live:
  - path: /run/systemd/system/etcd2.service.d/30-certificates.conf
    permissions: 0644
    content: |
      [Service]
      # client environment variables
      Environment=ETCD_CA_FILE=/home/core/ca.pem
      ...
  - path: /run/systemd/system/fleet.service.d/30-certificates.conf
    permissions: 0644
    content: |
      [Service]
      # client auth certs
      Environment=FLEET_ETCD_CAFILE=/home/core/ca.pem
      ...

尽管我们已经声明了证书文件的位置,但文件本身尚未生成。因此,我们需要了解每台CoreOS设备的专有IP地址,而此地址在设备创建时即可用。

请注意:在CoreOS Droplets上,cloud-config内容无法在Droplet创建完成后再行改动,因此需要重新引导方可重新执行该文件。大家应当避免在集群构建完成后在任何配置当中使用write-files部分,因为其需要在Droplet下次启动方可起效。

配置Droplets

现在我们已经定义了cloud-config.yml,下面利用其配置各集群成员。在DigitalOcean上,我们可以选择两种实现方案:通过基于Web的控制面板,或者利用cURL在命令行中调用DigitalOcean API。

使用DigitalOcean控制面板

在同一数据中心服务区内创建新的CoreOS Droplets。确保每次创建时检查专有网络并启用User Data。

  • coreos-1
  • coreos-2
  • coreos-3

在User Data字段内,粘贴之前的cloud-config.yml内容,确保在discovery字段中插入discovery URL。

使用DigitalOcean API

作为备选方案,我们也可以编写一套简短的Bash脚本,利用curl从DIgitalOcean API请求创建新的Droplet。首先利用nano打开makecoreos.sh新文件:

  • cd ~

  • nano makecoreos.sh

粘贴并保存以下脚本,调整region与size字段(默认为nyc3与512mb):

~/makecoreos.sh

#!/usr/bin/env bash

# A basic Droplet create request.
curl -X POST "https://api.digitalocean.com/v2/droplets" \
     -d'{"name":"'"$1"'","region":"nyc3","size":"512mb","private_networking":true,"image":"coreos-stable","user_data":
"'"$(cat ~/cloud-config.yml)"'",
         "ssh_keys":[ "'$DO_SSH_KEY_FINGERPRINT'" ]}' \
     -H "Authorization: Bearer $TOKEN" \
     -H "Content-Type: application/json"

现在将环境变量 DOSSHKEYFINGERPRINT与 TOKEN分别设置至与DigitalOcean账户与API个人访问令牌相关联的SSH密钥指纹。

关于更多与个人访问令牌与其API使用相关的信息,请参阅此教程。

为了找到与账户相关联的密钥指纹,请参阅账户设置的安全部分。公钥指纹,的一般形式为43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8。

我们可以使用export,确保该shell的子进程(例如makecoureos.sh)访问各变量。二者必须在脚本使用时的当前shell内设置,否则API调用将无法成功:

  • export DO_SSH_KEY_FINGERPRINT=”ssh_key_fingerprint”

  • export TOKEN=”your_personal_access_token”

注意:如果大家已经为该API生成了个人访问令牌,请记得保持其便利性与安全性。我们无法在其创建完成后再行检索,而且 任何拥有该令牌的用户都能够控制大家的DigitalOcean账户。

在为各必要凭证设置了环境变量后,我们可以运行该脚本以创建必要的Droplet。

利用其首条参数填充指向该API的调用中的name字段:

  • bash makecoreos.sh coreos-1

  • bash makecoreos.sh coreos-2

  • bash makecoreos.sh coreos-3

可以看到,每套新Droplet都以JSON输出结果进行描述,且三者全部显示在控制面板中的Droplets列表当中。整个引导过程可能需要数秒钟。

登录至coreos-1

无论大家是使用控制面板还是API,应该都已经构建起了三套Droplets。现在点击控制面板内各Droplet、再点击设置链接,查看其公共与专有IP。各Droplet的专有IP地址需要用于生成证书及配置防火墙。

下面测试Droplet。确保我们的SSH密钥被添加至本地SSH代理当中:

  • eval $(ssh-agent)

  • ssh-add

在控制面板中找到coreos-1的公共IP地址,接入SSH代理:

  • ssh -A core@coreos-1_public_ip

在首次登录任何集群成员时,我们可能会收集来自systemd的错误信息:

Output

CoreOS stable (766.5.0)
Failed Units: 1
  iptables-restore.service

可以看到,防火墙还没有进行配置。现在我们直接忽略即可。

在防火墙之前,我们首先保证各集群成员上的etcd2实例能够彼此通信。

使用CFSSL以生成自签名证书

CFSSL是一款工具套件,用于处理TLS/SSL证书,由CloudFlare发布。目前其已经成为CoreOS维护方的指定工具,用于生成自签名证书。这里不推荐使用etcd-ca。

在本地设备上安装CFSSL

CFSSL要求安装Go以获取代码源。具体请参阅Go安装指南。

确保我们的 GOPATH得到正确设置并被添加至 PATH当中,而后使用go以安装cfssl命令:

  • export GOPATH=~/gocode

  • export PATH= PATH: GOPATH/bin

  • go get -u github.com/cloudflare/cfssl/cmd/cfssl

  • go get -u github.com/cloudflare/cfssl/…

作为备选方案,我们也可以从pkg.cfssl.org检索预置二进制代码。首先确保路径中已经存在~/bin:

  • mkdir -p ~/bin

  • export PATH=$PATH:~/bin

而后使用curl检索cfssl与cfssljson的最新版本:

确保cfssl二进制代码拥有执行权限:

  • chmod +x ~/bin/cfssl

  • chmod +x ~/bin/cfssljson

生成证书中心

现在cfssl命令已经安装完成,我们可以利用其生成定制化证书中心,从而为各COreOS设备签署证书。首先创建并前往新建目录,用于容纳这些文件:

  • mkdir ~/coreos_certs

  • cd ~/coreos_certs

现在创建并打开ca-config.json文件:

  • nano ca-config.json

复制以下内容后保存,其负责配置cfssl的签名方式:

~/coreos_certs/ca-config.json

{
"signing": {
    "default": {
        "expiry": "43800h"
    },
    "profiles": {
        "client-server": {
            "expiry": "43800h",
            "usages": [
                "signing",
                "key encipherment",
                "server auth",
                "client auth"
            ]
        }
    }
}
}

请注意这里的expiry,目前其设定为43800 hours(相当于5年),而client-server配置文件中则同时包含server auth与client auth使用情况。我们需要保留二者以实现对等TLS。

下面创建并打开ca-csr.json。

  • nano ca-csr.json

粘贴以下内容,将CN与names部分调整为必要的位置与组织。这里可以使用虚构的hosts条目位置与组织名称:

~/coreos_certs/ca-csr.json

{
"CN": "My Fake CA",
"hosts": [
    "example.net",
    "www.example.net"
],
"key": {
    "algo": "rsa",
    "size": 2048
},
"names": [
    {
        "C": "US",
        "L": "CO",
        "O": "My Company",
        "ST": "Lyons",
        "OU": "Some Org Unit"
    }
]
}

如果大家希望将其与ca-config.json与ca-csr.json的默认值进行比较,则可使用cfssl输出默认值。在ca-config.json中,使用:

  • cfssl print-defaults config

对于ca-csr.json,使用:

  • cfssl print-defaults csr

在ca-csr.json与ca-config.json就绪后,生成证书中心:

  • cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
为CoreOS设备生成并签署证书

现在我们的证书中心已经就绪,我们可以为CoreOS设备编写默认值:

创建并打开coreos-1.json:

  • nano coreos-1.json

粘贴并保存以下内容,将其调整为coreos-1的专有IP地址:

~/coreos_certs/coreos-1.json

{
"CN": "coreos-1",
"hosts": [
    "coreos-1",
    "coreos-1.local",
    "127.0.0.1",
    "coreos-1_private_ip"
],
"key": {
    "algo": "rsa",
    "size": 2048
},
"names": [
    {
        "C": "US",
        "L": "Lyons",
        "ST": "Colorado"
    }
]
}

这里最重要的部分是CN,将其设定为我们的主机名称,而后是hosts部分,其中必须包含全部:

  • 各本地主机名称
  • 127.0.0.1
  • CoreOS设备的专有IP地址(而非公共IP)

这些内容都应作为subjectAltNames被添加至生成的证书内。

etcd连接(包含127.0.0.1上的本地回环设备)要求使用证书以获取与该连接主机名称匹配的SAN。

大家也可以变更name数组以反映必要位置。再次强调,这里我们可以使用虚构的位置名称值。

在各设备上重复以上流程,利用对应的hosts条目匹配coreos-2.json与coreos-3.json。

注意:如果大家希望查看coreos-1.json的默认值,可以使用cfssl:

  • cfssl print-defaults csr

现在,为各CoreOS设备生成签名证书,并将其上传至正确的设备:

  • cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=client-server coreos-1.json | cfssljson -bare coreos

  • chmod 0644 coreos-key.pem

  • scp ca.pem coreos-key.pem coreos.pem core@coreos-1_public_ip:

这将创建三个文件(ca.pem、coreos-key.pem以及coreos.pem),确保keyfile拥有正确的权限,而后通过scp将其复制至coreos-1上core的主目录中。

重复以上步骤,请注意每次命令调用都会覆盖之前的证书文件:

  • cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=client-server coreos-2.json | cfssljson -bare coreos

  • chmod 0644 coreos-key.pem

  • scp ca.pem coreos-key.pem coreos.pem core@coreos-2_public_ip:

  • cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=client-server coreos-3.json | cfssljson -bare coreos

  • chmod 0644 coreos-key.pem

  • scp ca.pem coreos-key.pem coreos.pem core@coreos-3_public_ip:

在coreos-1上检查etcd2功能

证书准备好后,我们可以在coreos-1上运行fleetctl了。首先通过SSH进行登录:

  • ssh -A core@coreos-1_public_ip

接下来,列出集群内的全部设备:

  • fleetctl list-machines

大家应当会看到各设备的标识符及其专有IP地址:

Output

MACHINE     IP      METADATA
7cb57440... 10.132.130.187  -
d91381d4... 10.132.87.87    -
eeb8726f... 10.132.32.222   -

如果fleetctl无限挂起,我们可能需要重启集群。退出当前设备:

  • exit

使用SSH将reboot命令发送至各CoreOS设备:

  • ssh core@coreos-1_public_ip ‘sudo reboot’

  • ssh core@coreos-2_public_ip ‘sudo reboot’

  • ssh core@coreos-3_public_ip ‘sudo reboot’

等待几分钟,重新接入coreos-1,再次尝试fleetctl。

在集群成本上配置IPTables防火墙

证书就绪后,本地网络中的其它设备将无法控制集群或者从etcd2中提取值。然而,尽可能降低攻击面仍然有其必要。为了限制网络公开性,我们可以在各设备上添加简单的防火墙规则,从而阻断集群之外的大部分网络流量。

请注意,如果我们在cloud-config中启用iptables-restore服务,则会在首次登录CoreOS设备时看到以下错误信息:

Output

CoreOS stable (766.5.0)
Failed Units: 1
  iptables-restore.service

其提示我们尽管服务已经启用,但iptables-restore未能正确加载。使用systemctl将其忽略:

  • systemctl status -l iptables-restore

    Output

    ● iptables-restore.service - Restore iptables firewall rules
    Loaded: loaded (/usr/lib64/systemd/system/iptables-restore.service; enabled; vendor preset: disabled)
    Active: failed (Result: exit-code) since Wed 2015-11-25 00:01:24 UTC; 27min ago
    Process: 689 ExecStart=/sbin/iptables-restore /var/lib/iptables/rules-save (code=exited, status=1/FAILURE)
    Main PID: 689 (code=exited, status=1/FAILURE)

    Nov 25 00:01:24 coreos-2 systemd[1]: Starting Restore iptables firewall rules…
    Nov 25 00:01:24 coreos-2 systemd[1]: iptables-restore.service: Main process exited, code=exited, status=1/FAILURE
    Nov 25 00:01:24 coreos-2 systemd[1]: Failed to start Restore iptables firewall rules.
    Nov 25 00:01:24 coreos-2 iptables-restore[689]: Can’t open /var/lib/iptables/rules-save: No such file or directory
    Nov 25 00:01:24 coreos-2 systemd[1]: iptables-restore.service: Unit entered failed state.
    Nov 25 00:01:24 coreos-2 systemd[1]: iptables-restore.service: Failed with result ‘exit-code’.

这里包含大量信息,不过最重要的在于iptables-restore[689]这行,其代表的是systemd尝试与其进程id共同运行的进程名称。在这里,我们通常会发现失效服务的错误信息。

防火墙之所以未能成功加载,是因为尽管我们已经在cloud-config中启用了iptables-restore,但还没有为其提供容纳有必要规则的文件。由于已经了解了各集群成员的专有IP,因此我们可以在这里编写规则集。

在编辑器中打开新文件,粘贴以下内容,注意将其中的coreos-1_private_ip,coreos-2_private_ip与coreos-3_private_ip替换为各CoreOS设备的专有IP地址。大家可能还需要调整Accept all TCP/IP traffic…以反映由集群提供的公共服务。

/var/lib/iptables/rules-save

- *filter

- :INPUT DROP [0:0]

- :FORWARD DROP [0:0]

- :OUTPUT ACCEPT [0:0]

- # Accept all loopback (local) traffic:

- -A INPUT -i lo -j ACCEPT

- # Accept all traffic on the local network from other members of

- # our CoreOS cluster:

- -A INPUT -i eth1 -p tcp -s coreos-1_private_ip -j ACCEPT

- -A INPUT -i eth1 -p tcp -s coreos-2_private_ip -j ACCEPT

- -A INPUT -i eth1 -p tcp -s coreos-3_private_ip -j ACCEPT

- # Keep existing connections (like our SSH session) alive:

- -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

- # Accept all TCP/IP traffic to SSH, HTTP, and HTTPS ports - this should

- # be customized  for your application:

- -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
- -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
- -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
- # Accept pings:

- -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT

- -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT

- -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT

- COMMIT

将以上内容复制到剪贴板,登录至coreos-1,而后利用Vim打开rules-save文件:

  • ssh -A core@coreos-1_public_ip

  • sudo vim /var/lib/iptables/rules-save

在编辑器内,输入:set进行粘贴,而后按下回车以确保自动缩进功能被关闭。按下Esc键离开插入模式,而后:wq以写入该文件并退出。

注意:确保该文件的最后一行上存在尾部新行,否则即使文件内的全部命令皆为正确,IPTables仍然会出现语法错误。

最后,确保该文件拥有正确的权限:

  • sudo chmod 0644 /var/lib/iptables/rules-save

现在我们可以再次尝试此服务了:

  • sudo systemctl start iptables-restore

如果成功,systemctl会静默退出。我们可以通过两种方式检查防火墙状态。首先,使用systemctl status:

  • sudo systemctl status -l iptables-restore

而后列出全部现有iptables规则:

  • sudo iptables -v -L

我们使用-v选项以获取详细输出结果,这将告知我们特定规则应用于哪个接口。

确定coreos-1上的防火墙配置完成后,进行登出:

  • exit

接下来,重复以上步骤在coreos-2与coreos-3上安装/var/lib/iptables/rules-save。

总结

在本教程中,我们已经定义了三个基础CoreOS集群成员,为其各自提供了TLS/SSL证书以实现验证及传输安全,而后利用防火墙屏蔽一切来自本地数据中心网络的其它Droplets的连接。

以此为基础,大家也可以参阅CoreOS上手指南以了解更多也出服务定义及管理相关的内容。

本文来源自DigitalOcean Community。英文原文:How To Secure Your CoreOS Cluster with TLS/SSL and Firewall Rules By Brennen Bearnes

翻译:diradw

Node.js+K8s生产部署实战:Semaphore与DigitalOcean CI/CD全链路详解 Kubernetes容器编排与CI/CD持续交付是现代云原生应用的核心能力。理解其底层原理——如Pod调度机制、镜像拉取认证流程、健康探针设计逻辑及资源请求/限制的CPU毫核(millicores)语义——是实现稳定交付的前提。技术价值在于将开发成果可靠、可重复、安全地转化为线上服务,避免因权限配置错误、网络策略缺失或环境变量注入失效导致的ImagePullBackOff、CrashLoopBackOff等高频故障。典型应用场景涵盖中小团队MVP快速验证、Node.js微服务上云、以及基于托管K8s集群(如 阅读详情

相关推荐

WorkBuddy 集成 飞书CLI,全程10分钟,丝滑无比,老板要注意了...

飞书CLI实测:10分钟实现AI操控飞书办公 飞书CLI作为命令行工具,让用户通过简单命令完成飞书各项操作。本文记录了从安装到使用的完整过程:一键安装仅需10分钟,支持200多条命令覆盖飞书全部功能,与AI结合后可实现自然语言办公。实测中成功用语音指令创建了7天发文计划日程,验证了其便捷性。虽然首次认证存在超时问题,但整体体验流畅。该工具将复杂操作简化为自然语言指令,大幅提升办公效率,特别适合需要频繁使用飞书的用户。后续还将探索更多自动化办公场景。

三棱球的专栏 1145

防止TLS阻断:保护您的网络通信安全

TLS阻断是指攻击者试图干扰或破坏TLS连接的行为。攻击者可以使用各种手段来实施TLS阻断,例如中间人攻击、弱密码攻击、伪造证书等。这些攻击威胁了网络通信的机密性和完整性,使得敏感信息可能被窃取、篡改或伪造。保护网络通信安全对于组织和个人来说至关重要。通过使用TLS协议并采取相应的安全措施,可以有效防止TLS阻断攻击。随着技术的发展,我们可以预见TLS的安全性和性能将不断提升,以应对日益复杂的网络安全威胁。

博客 1215

Revit Dynamo实战:用Excel数据批量生成桥梁模型(附自适应族技巧)

本文详细介绍了如何利用Revit Dynamo结合Excel数据实现桥梁参数化建模,重点讲解了数据驱动建模、自适应族优化及大型项目性能管理三大核心技巧。通过结构化Excel数据、高级自适应族创建和分块处理策略,显著提升桥梁建模效率与设计变更响应能力。

weixin_42520025的博客 388

如何用 CFSSL 从零开始快速构建一套私有 PKI

公众号关注「奇妙的 Linux 世界」设为「星标」,每天带你玩转 Linux !Synopsis本文档会介绍如何用 cfssl 从零构建起一套 PKI,包括签发根证书(rootCA)、中间证书和叶子证书,以及通过 CRL 实现证书吊销列表。Background1、证书编码格式PEM(Privacy Enhanced Mail)通常用于数字证书认证机构(Certificate Authoritie...

easylife206的专栏 1980

【4. BSP开发指南 - [4.6. 安全启动使用说明]】

【4. BSP开发指南 - [4.6. 安全启动使用说明]】

Sugar_wolf的博客 276

Windows安装 OpenClaw详细教程(使用wsl2+ubuntu)

OpenClaw 是一款于 2026年1月 正式对外开源的个人AI助手平台(AI Agent),由 PSPDFKit 创始人彼得·斯坦伯格(Peter Steinberger) 开发。它不仅仅是一个聊天机器人,更是一个能够主动执行任务的“数字管家”。OpenClaw的核心特点是本地化部署、隐私可控以及强大的自动化执行能力。OpenClaw 项目在开发过程中经历过两次更名,最终定为现名:初名:Clawdbot(因与 Claude 名称过于相似引发侵权争议而改名)。

猿小白的博客 1011

tls阻断是什么

TLS阻断是一种网络干扰手段,目的在于阻止或干扰传输层安全协议(TLS)的正常通信。TLS(传输层安全协议)是一种广泛使用的加密协议,旨在为互联网通信提供安全性和数据完整性保护。通过TLS,数据在客户端与服务器之间传输时可以进行加密,以防止数据被窃听或篡改。

m0_57236802的博客 580

8.Python基础语法(五)续【光说不练假把式,上题】

Python基础语法(二) 有关于Python循环语句的几道实操,让大家理解知识点更深更透彻~

孤寒者的博客 2万+

cfssl使用方法重新整理说明

cfssl使用方法重新整理说明

m0_46900715的博客 2151

34、婴儿监视器应用开发指南

本文详细介绍了基于 ESP32 和 Edge Impulse 开发婴儿监视器应用的全过程,涵盖音频处理、机器学习推理、ESP RainMaker 平台集成以及内存监控等功能。通过实现 AppAudio、AppRmaker 和 AppMem 三个核心类,完成了婴儿哭声的实时检测与远程通知,并通过合理的内存管理优化,有效节省了 ESP32 的内部 RAM 资源。文章还提供了完整的代码示例和配置说明,适用于物联网和嵌入式 AI 应用开发爱好者参考学习。

python9snake的博客 95

2026华为OD机考新系统真题 + 双机位C卷 + 往年真题 - 题库目录分值说明 + 考点说明+在线OJ

2026年4月1日起,华为OD机试正式切换至新系统模式!采用力扣模式,无需自己写输入! 难度大幅度降低。正在备考华为OD机试的同学,优先刷新系统机试真题,可大幅提升通过率。 新系统考题考点与旧版一致,无需重新适应。本专栏所有算法题均配有详细思路解析,并提供C语言、JS、C++、Python、Go、Java多语言源码实现。订阅后私信即可开通专属OJ刷题权限,高效备考一次上岸!

算法大师! 45万+

联邦学习实战:基于Fedlearner搭建隐私保护机器学习平台

联邦学习是一种创新的分布式机器学习范式,其核心原理是在不移动原始数据的前提下实现多方协同建模。通过'数据不动,模型动'的技术机制,联邦学习有效解决了数据孤岛问题,在保护数据隐私的同时释放数据价值。该技术采用差分隐私、同态加密等安全机制,确保训练过程中的数据安全。在工程实践中,联邦学习广泛应用于金融风控、广告推荐、医疗健康等场景,其中Fedlearner作为基于Kubernetes的开源平台,提供了完整的联邦学习解决方案。平台支持横向和纵向两种联邦学习范式,通过PSI隐私求交、梯度压缩等关键技术,实现了从数据

HJ921004的博客 459

关闭搜狗输入法右下角广告的解决方案

本文主要介绍了关闭搜狗输入法右下角广告的解决方案,希望能对使用搜狗输入法的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

使用cfssl生成自签证书

tls即安全传输层协议,一般用于在两个通信应用程序之间提供保密性和数据完整性,由于在工作项目中系统内部需要安全认证,google一下发现了一个好用的自签证书的开源工具cfssl。cfssl是由CoreOS提供的(用GO实现,直接使用go get就可以安装),简单安全。 cfssl用来为etcd提供tls证书,因此它支持签三种类型的证书:client证书、server证书以及peer证书(即etcd...

DXZCZH的博客 6578

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

防火墙+SSL

1、防火墙 (1)简介概述 包过滤防火墙:简单的ACl,代理防火墙 状态检测防火墙:基于IP连接状态,UTM统一威胁管理 下一代防火墙(NGFW):通过应用特征和应用表现来识别应用;处理能力提高,基于角色的用户识别—基于状态检测防火墙的 (2)防火墙原理 1>包过滤防火墙 包过滤防火墙只检测IP报文头部,类似于访问控制列表ACL, 特点如下 无法关联数据包之间的关系(三次握手,ICMP等等) 安全性存在一些问题 2>代理防火墙 3>状态防火墙 状态防火墙的特点如下 状态防火墙不在

qq_39965491的博客 2262

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SSL与TLS 区别 以及介绍

SSL与TLS 区别 以及介绍    文章分类:Java编程  SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。 TLS:(Transport Layer Secur

Adrian 博客 1万+

关于阿里云SLB与WAF的TLS记录

文章目录背景信息问题分析问题对应 背景信息 阿里云有一套企业官方网站,大致架构是WAF->SLB->Websites->RDS,可参考下图。 当前问题是客户需要做扫描测试,发现一些问题需要修复,其中涉及一项[TLS/SSL Sweet32 attack]是本文的关注点。 问题分析 [TLS/SSL Sweet32 attack]官方链接参考如下: weet32: Birthday attacks on 64-bit block ciphers in TLS and OpenVPN 那么简

Eric.zhong 2228

后端开发基础-Spring框架学习-002——基础概念

对于很多Java工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。再分享一波我的Java面试真题+视频学习详解+技能进阶书籍《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

2401_83916394的博客 775

数字证书中主题(Subject)中字段的含义

数字证书中主题(Subject)中字段的含义 一般的数字证书产品的主题通常含有如下字段: 公用名称 (Common Name) 简称:CN 字段,对于 SSL 证书,一般为网站域名或IP地址;而对于代码签名证书则为申请单位名称;而对于客户端证书则为证书申请者的姓名;  单位名称 (Organization Name) :简称:O 字段,对于 SSL 证书,一般为网站域名;

1万+

cfssl简单使用

CA根证书配置文件,一般命名为ca-config.json,它用于配置根证书的使用场景 (profile) 和具体参数 (usage,过期时间、服务端认证、客户端认证、加密等),后续在签名其它证书时需要指定特定场景 (profile)。查看某个命令使用:cfssl [command] -help,其中[command]为某个命令名称。2) CA根证书及其私钥创建过程不需要甚至该字段。生成自签名根 CA 证书和私钥。生成证书签名请求和私钥。生成 CA 秘钥文件(目标证书签名请求文件。

janthinasnail的博客 2980

cfssl工具的使用

这里写自定义目录标题cfssl制作证书 cfssl制作证书 废话少说直接开干 ···json { “signing”: { “default”: { “expiry”: “168h” }, “profiles”: { “etcd”: { “expiry”: “8760h”, “usages”: [ “signing”, “key encipherment”, “server auth” ] }, ...

sz_xiaodong_li的博客 905

FirewallD详解(转载)

在CentOS7开始,默认是没有iptables的,而是使用了firewall防火墙. 与时俱进,简单的整理了一下firewall的使用方法. 关于详细的介绍参考官网,就不搬字了.这个网站有中文选项.可以直接看中文.关于CentOS7 非常多是资料这里面都能找到. 官方文档地址: https://access.redhat.com/documentation/en-US/Red_Hat

菲比他爹的专栏 1648

浅谈SSL/TLS工作原理

为了保证网络通信的安全性,需要对网络上传递的数据进行加密。现在主流的加密方法就是SSL (Secure Socket Layer),TLS (Transport Layer Security)。后者比前者要新一些,不过在很多场合还是用SSL指代SSL和TLS。 先来回顾一下网络通信加密的发展过程,假设A和B之间要网络通信。 远古时代 远古时代自然是民风淳朴,路不拾遗,夜不闭户。A要发数据给B,根本不用担心窃听和篡改,直接发就好了。 上古时代 随着时代的发展,渐渐的有了一类人---C。C不仅

顺其自然~专栏 634

SSL证书详解和CFSSL工具使用

SSL证书详解和CFSSL工具使用 1.公钥基础设施PKI基础概念 CA(Certification Authority)证书,指的是权威机构给我们颁发的证书。 密钥就是用来加解密用的文件或者字符串。密钥在非对称加密的领域里,指的是私钥和公钥,他们总是成对出现,其主要作用是加密和解密。常用的加密强度是2048bit。 RSA即非对称加密算法。非对称加密有两个不一样的密码,一个叫私钥,另一个叫公钥,用其中一个加密的数据只能用另一个密码解开,用自己的都解不了,也就是说用公钥加密的数据只能由私钥解开。 证书的编码

江晓龙的博客 4970

阻塞式和非阻塞式udp传输_TLS 1.3和QUIC,UDP那些事儿

去年8月IETF正式宣布TLS 1.3规范rfc8446,总体上TLS 1.3基于UDP和QUIC技术。关于TLS 1.3和QUIC技术实现、能带来哪些优势,今天虫虫就跟大家一起聊聊。QUIC源于谷歌改善搜索和Chrome浏览器的互联网传输技术。谷歌已经在Chrome上已经使用好多几年,实践证明可以极大的改善网络传输减少延迟。QUIC技术的优势在TLS 1.3中使用QUIC代了TCP和TLS的组合...

weixin_39549312的博客 876
上一篇: 如何利用CoreOS服务器对常见问题进行故障排查
下一篇: 为什么我们不推荐运行自己的邮件服务器
普通网友
博客等级 码龄10年 769粉丝 269原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值