首页
Search
1
解决visual studio code (vscode)安装时没有选择安装路径问题
320 阅读
2
如何在 Clash for Windows 上配置服务
215 阅读
3
Linux 下 Bash 脚本 bad interpreter 报错的解决方法
150 阅读
4
Arch Linux 下解决 KDE Plasma Discover 的 Unable to load applications 错误
149 阅读
5
uniapp打包app提示通讯录权限问题,如何取消通讯录权限
113 阅读
clash
服务器
javascript
全部
游戏资讯
登录
Search
加速器之家
累计撰写
1,194
篇文章
累计收到
0
条评论
首页
栏目
clash
服务器
javascript
全部
游戏资讯
页面
搜索到
1194
篇与
的结果
2024-08-12
Debian / Ubuntu 使用 xcaddy 自定义编译 Caddy
本文将指导使用 xcaddy 自定义编译 Caddy。上一篇文章介绍了如何安装使用 Caddy,但是 Caddy 的功能有时候并不能满足业务需求,如果想要使用更多的功能,就需要自定义编译 Caddy。xcaddy 是 Caddy 官方制作的用于自定义编译 Caddy 的工具,它可以帮助我们快速的编译出符合自己需求的 Caddy。安装 xcaddy我们按照官方的安装方法,首先,安装一些必要的软件包:apt update apt upgrade -y apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates 然后按照官方教程安装 Go:wget https://go.dev/dl/go1.22.1.linux-amd64.tar.gz rm -rf /usr/local/go && tar -C /usr/local -xzf go1.22.1.linux-amd64.tar.gz 然后把 go 加入系统环境变量:echo "export PATH=\$PATH:/usr/local/go/bin" >> /etc/profile 然后加入 Caddy 的 GPG 公钥和 apt 源:curl -sSL https://dl.cloudsmith.io/public/caddy/xcaddy/gpg.key | gpg --dearmor > /usr/share/keyrings/xcaddy.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/xcaddy.gpg] https://dl.cloudsmith.io/public/caddy/xcaddy/deb/debian any-version main" > /etc/apt/sources.list.d/xcaddy.list 然后更新系统后即可安装 xcaddy:apt update apt install xcaddy 重启打开 SSH 后检查一下 go 和 xcaddy 的版本:root@debian ~ # go version go version go1.19.5 linux/amd64 root@debian ~ # xcaddy version v0.3.1 h1:XKmnGnGTeB53hLUgnGr/R4JbTNSxh8IBAFcJkrtycso= 自定义编译 Caddy我们可以选择一些自己喜欢的模块,比如缓存模块和 Brotli 压缩模块:xcaddy build \ --with github.com/caddyserver/cache-handler \ --with github.com/ueffel/caddy-brotli 经过一段时间的编译以后,我们就可以在当前目录下看到一个名为 caddy 的二进制文件,这就是我们自定义编译的 Caddy 了。自定义 Caddy 和系统 Caddy 共存如果我们想要自定义 Caddy 和系统 Caddy 共存,可以使用官方的教程:首先,按照我们的教程安装 Caddy,安装完毕后,先停止 Caddy 服务:systemctl stop caddy 然后使用 dpkg-divert 命令将系统 Caddy 的二进制文件移动到 /usr/bin/caddy.default 并做软链接:dpkg-divert --divert /usr/bin/caddy.default --rename /usr/bin/caddy 然后把我们自己编译好的 Caddy 二进制文件移动到 /usr/bin/caddy.custom:mv ./caddy /usr/bin/caddy.custom 然后设置优先级,让我们的自定义 Caddy 优先启动:update-alternatives --install /usr/bin/caddy caddy /usr/bin/caddy.default 10 update-alternatives --install /usr/bin/caddy caddy /usr/bin/caddy.custom 50 此时我们可以看到默认的 /usr/bin/caddy 已经是我们自定义的 Caddy 了:root@debian ~ # ls -l /usr/bin/caddy lrwxrwxrwx 1 root root 23 Jan 22 10:52 /usr/bin/caddy -> /etc/alternatives/caddy* root@debian ~ # ls -l /etc/alternatives/caddy lrwxrwxrwx 1 root root 21 Jan 22 10:52 /etc/alternatives/caddy -> /usr/bin/caddy.custom 我们也可以使用 update-alternatives --config caddy 命令来切换系统安装的 Caddy 和自定义的 Caddy:root@be ~ # update-alternatives --config caddy There are 2 choices for the alternative caddy (providing /usr/bin/caddy). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/caddy.custom 50 auto mode 1 /usr/bin/caddy.custom 50 manual mode 2 /usr/bin/caddy.default 10 manual mode Press <enter> to keep the current choice[*], or type selection number: 我们可以看到默认的 Caddy 二进制文件是我们自定义的,你可以输入 0 (按照优先级自动) 1 (手工切换自定义 Caddy) 或 2 (使用系统默认 Caddy) 来修改并切换默认的 Caddy 版本。
2024年08月12日
10 阅读
0 评论
0 点赞
2024-08-12
Docker 安装 Mailcow 自建域名邮箱
本文将指导使用 Docker 安装 Mailcow 搭建自建邮箱。PS:本文同时适用于任何可安装 Docker 的 Linux 发行版。什么是电子邮箱?电子邮箱,即电子邮件,就是 Email,是指一种由一寄件人将数字信息发送给一个人或多个人的信息交换方式,一般会通过互联网或其他电脑网络进行书写、发送和接收信件,目的是达成发信人和收信人之间的信息交互。一些早期的电子邮件需要寄件人和收件人同时在线,类似即时通信。(Wikipedia)国内用户一般会使用网易 (@163.com)、腾讯 (@qq.com) 等免费邮箱服务,国外用户一般会使用 Google (@gmail.com)、Yahoo (@yahoo.com)、Microsoft (@outlook.com) 等免费服务。为什么要自建邮箱?首先,你的数据是你自己的,你的隐私应当得到保护,而不是那些垄断巨头公司的,几乎所有市面上的免费邮箱服务,都是以牺牲你的隐私和数据为代价,利用你的大数据来进行广告行为分析来盈利,那么,你愿意把你自己的数据交付给和你素不相识的第三方么?其次,看本博客的读者,几乎人手一个域名,人手一只 VPS,那为何不把现有资源利用起来做一些很酷的事情呢?自建邮箱的优势和劣势那么,会有小伙伴指出,市面上也有收费的邮箱呀,比如国内一些大厂的 “企业邮箱”,为什么不用收费服务呢?我们就自建邮箱,免费邮箱和收费邮箱做一个简单的表格对比:对比自建邮箱免费邮箱收费邮箱隐私性高低中维护难度高低低价格中无中 - 高使用成本高无中隐性成本*中极高高着重指出一下我所强调的隐性成本:因为免费和收费的邮箱服务,你的数据都是保存在第三方,你没有服务器的权限,你的帐号都是别人服务器里的冷冰冰的数据库,那么,你邮箱的提供商可以:随时用各种理由关停你的服务,无论是合法的还是莫须有的原因,比如这里的例子随时把你的资料卖给第三方,你作为最终用户是不可能知道的,比如?随时面临倒闭关门从而永久丢失数据的风险,比如曾经的雅虎中文邮箱。这些成本是你使用第三方服务的时候可能没有考虑过的,而自建邮箱服务的话,这个隐性成本我们是可控的:你可以控制你的域名,只要选对有良好信誉的注册局和注册商,每年稳定续费并不做违反 ToS 的事情,域名一般不会被强制暂停;你可以选择你的服务器供应商,只要选对有良好信誉的供应商,每月稳定续费并不做违反 ToS 的事情,服务器一般不会被强制暂停;你可以每天备份你的数据,自己做数据容灾备份,不丢失任何重要的资料。自建邮箱需要准备的资料首先,你需要有一个你 “完全拥有使用权限” 的 “国际化” 的域名,我们不推荐使用任何小国家的国别后缀,不然哪天你域名怎么没的都不知道,这里主要还是推荐如下几个稳如狗的 gTLD 后缀:.com.net.org其次,你需要一台服务器或 KVM / Xen 构架的 VPS,按照官网的说法,推荐的最小配置要求如下:Resourcemailcow: dockerizedCPU1 GHz内存最低 6 GiB + 1 GiB swap (实际测试 4 GiB 内存也足够)硬盘20 GiB (不包含邮件的占用)系统x86_64并且从防火墙放行这几个 TCP 端口:服务协议端口容器名Postfix SMTPTCP25postfix-mailcowPostfix SMTPSTCP465postfix-mailcowPostfix SubmissionTCP587postfix-mailcowDovecot IMAPTCP143dovecot-mailcowDovecot IMAPSTCP993dovecot-mailcowDovecot POP3TCP110dovecot-mailcowDovecot POP3STCP995dovecot-mailcowDovecot ManageSieveTCP4190dovecot-mailcowHTTP(S)TCP80/443nginx-mailcow请注意,因为垃圾邮件滥用的原因,很多国外的 VPS 商家并不允许架设邮件发送服务器,并且默认 25 端口的出口方向是屏蔽的,请自行咨询厂商。安装 Docker 和 Docker ComposeDebian 和 Ubuntu 系统请参考本站教程。其他 Linux 系统可以使用 Docker 官方的脚本安装 Docker 和 Docker Compose:curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh 设置 DNS 解析记录我们假设你的邮箱服务器需要使用域名 mail.example.com,你想搭建 username@example.com 的邮箱;然后你的服务器 IPv4 为 192.0.2.25,IPv6 为 2001:db8::25,那么请预先做好如下解析:域名解析类型解析值mail.example.comA192.0.2.25mail.example.comAAAA2001:db8::25example.comMX10 mail.example.com.example.comTXT"v=spf1 mx ~all"_dmarc.example.comTXT"v=DMARC1; p=reject; sp=reject; adkim=s; aspf=s;"autodiscover.example.comCNAMEmail.example.com.autoconfig.example.comCNAMEmail.example.com.请注意某些 DNS 厂商的控制面板添加 MX 和 CNAME 记录时不需要输入最后的点号,添加 TXT 记录时不需要最前面和最后面的引号。另外需要联系你的 VPS 厂商,设置 PTR 记录,即 IP 反向解析,请设置 192.0.2.25 和 2001:db8::25 的 PTR 记录为 mail.example.com. 提高邮件到达率。安装 Mailcow首先我们获取 Mailcow 的安装代码:apt install git -y cd /opt git clone https://github.com/mailcow/mailcow-dockerized cd mailcow-dockerized 然后生成配置文件,请注意使用 FQDN (比如 mail.example.com) 作为 hostname:bash generate_config.sh 按照提示输入自己的需求后即可生成好配置文件 mailcow.conf,如有需要可以自己修改这个文件。然后拉取 Docker 镜像并启动docker compose pull docker compose up -d 耐心等待几分钟后即可访问 https://mail.example.com/ 默认用户名 admin 默认密码 moohoo,建议立马修改并开启 2FA 两步验证确保安全。添加域名和邮箱进入 Mailcow 后台后,我们可以在顶部的 Configuration > Mail Setup 里添加域名在左侧的 Domains tab 里选择 +Add domain 添加域名:按照自己的要求填入各种设置:如果需要立马生效 Web 客户端,可以选择 Add domain and restart SOGo:开启 DKIM 并添加 DNS 记录开启 DKIM 后邮件发信到达率更高,你可以登录 Mailcow 后台后在 Configuration > ARC/DKIM keys 查看你域名的 dkim 记录值:右边那一串 v=DKIM1;k=rsa;t=s;s=email;p= 的 2048 位字符即你的 DKIM 值,如果未开启,可以在下方输入域名,选择 2048 位,然后点 + Add 按钮添加默认添加完域名后即开启了 DKIM,且 Selector 设置为 dkim,然后我们需要添加如下 DNS 记录:域名解析类型解析值dkim._domainkey.example.comTXT"v=DKIM1;k=rsa;t=s;s=email;p=blablablablablabla"某些 DNS 厂商的后台可能无法直接添加 2048 位 DKIM 的 TXT 记录,因为 TXT 类型的 DNS 记录最大长度为 255 个字符,那么请手工截断成两个 TXT 记录,第一个需要 255 个字符,第二个记录为剩下的字符串添加邮箱用户我们可以在 Mailboxes 这个 tab 里选择 +Add mailbox 按钮添加用户:按要求提示填写即可:测试邮件我们使用刚开的用户登录 Mailcow 自带的 SOGo,默认情况下地址为 https://mail.example.com/SOGo/首先,测试接受邮件,使用任何外部邮箱给 username@example.com 发一封邮件,看看是否正常收到邮件。然后我们测试发送邮件,在 mail-tester.com 发送一封 Plain Text 格式的测试邮件,稍等片刻后即可查看你的邮件分数,我们可以看到,严格按照本文教程搭建的自建邮箱服务评分可以是 10 分:Mailcow 的更新和备份Mailcow 的更新只需执行 update.sh 脚本即可:cd /opt/mailcow-dockerized ./update.sh 按照提示更新仓库文件:然后再次执行 ./update.sh 更新 Mailcow,提供提示 Are you sure you want to update mailcow: dockerized? All containers will be stopped. [y/N] 输入 y 然后按回车:然后耐心等待 Docker 更新并重启容器,并且可以选择删除旧的容器:你也可以使用 docker system prune 命令清除无用的 Docker 镜像。Mailcow 的备份也自带脚本,我们只需进入目录执行 ./helper-scripts/backup_and_restore.sh 即可:假设你需要备份到 /opt/backup 目录cd /opt/mailcow-dockerized MAILCOW_BACKUP_LOCATION=/opt/backup ./helper-scripts/backup_and_restore.sh backup all 建议使用定时脚本每天定时备份并同步到第三方机房加密保存一个简单的 crontab 定时脚本如下5 3 * * * cd /opt/mailcow-dockerized/; MAILCOW_BACKUP_LOCATION=/opt/backup /opt/mailcow-dockerized/helper-scripts/backup_and_restore.sh backup all 具体备份命令可参考官方教程Mailcow 的迁移有时候我们需要更换服务器,因为基于 Docker 安装,迁移 Mailcow 是个很简单的事情。方法一:直接迁移整个 Docker首先,在需要迁移的服务器安装 Docker 和 Docker Compose,并确保两边的版本一致,然后停止 Docker 服务:systemctl stop docker.service systemctl stop docker.socket 使用 systemctl status docker 命令检查下 Docker 的状态:然后从原来的机器把 Docker 容器和挂载的 Volumes 同步到新的机器:新旧机器均需要安装 rsync:apt install rsync -y 旧的机器生成一个 SSH Key:ssh-keygen -t ed25519 然后把 /root/.ssh/id_ed25519.pub 文件内容加到新机器的 /root/.ssh/authorized_keys然后同步 Mailcow 文件和 Docker 挂载的 Volumes:rsync -aHhP --numeric-ids --delete /opt/mailcow-dockerized/ root@新机器:/opt/mailcow-dockerized rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ root@新机器:/var/lib/docker/volumes 然后在原来的机器停止 Mailcow 容器:cd /opt/mailcow-dockerized docker compose down 然后再次执行一次同步:rsync -aHhP --numeric-ids --delete /opt/mailcow-dockerized/ root@新机器:/opt/mailcow-dockerized rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ root@新机器:/var/lib/docker/volumes 然后在新的机器启动 Docker 服务:systemctl start docker.service 然后在新的机器启动 Mailcow 容器:cd /opt/mailcow-dockerized docker compose pull docker compose up -d 记得迁移之前需要修改好 DNS 记录,解析到新的服务器 IP 即可。这个迁移方法理论上适合任何使用 Docker 安装的软件方法二:使用 Mailcow 自带的备份和恢复脚本首先进入旧的服务器,然后进入 Mailcow 的目录,执行备份脚本:cd /opt/mailcow-dockerized ./helper-scripts/backup_and_restore.sh backup all 记得关闭 Mailcow 服务:docker compose down 然后把备份好的文件夹使用 rsync 同步到新的机器,这里假设你备份在 /opt/backup 目录:rsync -avz /opt/backup root@新机器:/opt 然后进入新的机器,从头开始安装一次全新的 Mailcow,然后执行恢复脚本:cd /opt/mailcow-dockerized ./helper-scripts/backup_and_restore.sh restore 然后按照提示选择恢复的备份目录,比如 /opt/backup 即可。
2024年08月12日
16 阅读
0 评论
0 点赞
2024-08-12
Debian 11 Bullseye 升级 Debian 12 Bookworm
本文将指导如何升级 Debian 11 Bullseye 到 Debian 12 Bookworm。相关教程:Debian 10 Buster 升级 Debian 11 Bullseye。准备工作除非你是物理服务器,以及没有用过奇奇怪怪定制或修改的内核的 KVM 构架的 VPS 和云主机,否则升级大版本更新内核是有一定机率导致 Grub 加载失败的,切记备份重要数据!OpenVZ 6 和 LXC 构架的 VPS 是无法升级的,因为他们没有自己独立的内核再强调一遍,一定要备份重要数据!以下操作需要在 root 用户下完成,请使用 sudo -i 或 su root 切换到 root 用户进行操作更新系统首先需要更新你当前的系统apt update apt upgrade -y apt dist-upgrade -y apt autoclean apt autoremove -y 如果内核更新了,可以重启让最新的内核生效,也可以直接进行升级。升级系统首先更新 apt 源,替换 bullseye 为 bookworm:sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list.d/*.list 对于 Debian 12 以后的版本,所有 Debian 可以分发的打包的非自由固件二进制文件 (non-free),比如某些驱动,都被转移到 Debian Archive 中的一个新组件,称为非自由固件 (non-free-firmware)。如果您从旧版的 Debian 升级,并且需要这些固件二进制文件,您应该更新您系统上的 /etc/apt/sources.list,以使用这个新组件 (来源):sed -i 's/non-free/non-free non-free-firmware/g' /etc/apt/sources.list 默认的系统 apt 源文件 /etc/apt/sources.list 应该是类似这样的:deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware 大部分 Debian 的软件源配置文件使用传统的 One-Line-Style,路径为 /etc/apt/sources.list;但是对于容器镜像,从 Debian 12 开始,其软件源配置文件变更为 DEB822 格式,路径为 /etc/apt/sources.list.d/debian.sources:(参考)Types: deb URIs: https://deb.debian.org/debian Suites: bookworm bookworm-updates bookworm-backports Components: main contrib non-free non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg Types: deb URIs: http://security.debian.org/debian-security Suites: bookworm-security Components: main contrib non-free non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg 国内服务器可以替换 deb.debian.org 和 security.debian.org 为 mirrors.tuna.tsinghua.edu.cn然后我们再次执行更新系统:apt update apt upgrade -y apt dist-upgrade -y 更新过程种会提示一些软件是否需要自动重启,选 Yes 即可,以及一些软件的配置文件是否需要更新,按照自己的情况选择即可,默认回车即视为使用旧的配置文件,一般会出现在 OpenSSH 等软件的更新上。在 apt-listchanges: News 界面可以按 q 退出:提示是否自动重启服务:提示是否更新 OpenSSH 配置文件:注意某些软件更新后可能会更新 systemd 服务配置,此时我们可以执行 systemctl daemon-reload 重新加载配置。如果升级的时候遇到了如下错误:Setting up dbus-daemon (1.14.6-1) ... UUID file '/var/lib/dbus/machine-id' should contain a hex string of length 32, not length 0, with no other text dpkg: error processing package dbus-daemon (--configure): installed dbus-daemon package post-installation script subprocess returned error exit status 1 dpkg: dependency problems prevent configuration of dbus: dbus depends on dbus-daemon (= 1.14.6-1); however: Package dbus-daemon is not configured yet. dpkg: error processing package dbus (--configure): dependency problems - leaving unconfigured Processing triggers for libc-bin (2.36-9) ... Errors were encountered while processing: dbus-daemon dbus E: Sub-process /usr/bin/dpkg returned an error code (1) 删除 /var/lib/dbus/machine-id 这个空文件后重新执行命令即可,升级 dbus 时会自动生成这个文件。rm -rf /var/lib/dbus/machine-id 更新后删除不必要的软件和依赖:apt autoclean apt autoremove -y 然后我们使用 reboot 命令重启系统,耐心等待后,查看最新的系统版本:root@debian ~ # cat /etc/debian_version 12.5 root@debian ~ # lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm root@debian ~ # uname -a Linux debian 6.1.0-21-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64 GNU/Linux 这时我们就已经更新到了最新的 Debian 12 Bookworm 和内核了。
2024年08月12日
12 阅读
0 评论
0 点赞
2024-08-12
Debian 12 / Ubuntu 24.04 开启 SSH 的 RSA Key 登录
本文将指导如何在 Debian 12 和 Ubuntu 24.04 开启 SSH 的 RSA Key 登录。自从 OpenSSH 8.3 开始,RSA Key 登录默认被禁用,并被认为不安全。所以自从 Ubuntu 22.04 和 Debian 12 开始,如果某些古老的业务需要使用 RSA Key 登录,你需要手动开启 RSA Key 登录。开启 RSA Key 登录我们不需要修改 /etc/ssh/sshd_config 这个系统默认的 SSH 配置文件,只需要添加一个 /etc/ssh/sshd_config.d/enable_rsa_keys.conf 配置文件即可:cat > /etc/ssh/sshd_config.d/enable_rsa_keys.conf << EOF HostKeyAlgorithms +ssh-rsa PubkeyAcceptedKeyTypes +ssh-rsa EOF 重启 SSH 服务然后重启 SSH 服务即可:systemctl status ssh 或systemctl restart sshd 这两个服务在 Debian 12 下都是一样的:root@debian ~ # systemctl status ssh.service ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; preset: enabled) Active: active (running) since Fri 2023-06-09 16:54:43 UTC; 15min ago 对比root@debian ~ # systemctl status sshd ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; preset: enabled) Active: active (running) since Fri 2023-06-09 16:54:43 UTC; 15min ago 我们可以看到 sshd 其实是 ssh 服务的别称:root@debian ~ # cat /lib/systemd/system/ssh.service | grep Alias Alias=sshd.service 此时您就可以使用 RSA Key 登录 SSH 了。
2024年08月12日
37 阅读
0 评论
0 点赞
2024-08-12
Nginx 配置 SSL 证书
本文将介绍购买 SSL 证书并在 Nginx 配置的姿势。免费证书和收费证书的区别首先,免费的 SSL 证书是没有保险的,也没有 SLA 保障,适合个人项目以及短期的网站,对于长期运营的网站来说,我们并不推荐使用免费的 SSL 证书,这时候您就需要购买一个收费的 SSL 证书。如果您需要免费证书,您可以在 FreeSSL 获取一年的 TrustAsia 证书,您也可以使用 ACME 获取 3 个月的 Let's Encrypt 或 ZeroSSL 证书。对于普通网站来说,我们推荐 Riven Cloud 的 SSL DV 证书,单域名仅需 $4 美元一年,泛域名也就是俗称 “野卡” 证书也仅需 $40 美元一年,这个价格是比较实惠的。对于商业网站来说,推荐购买 OV 证书,价格虽贵,但是更有保障,毕竟需要验证组织才签发证书,而普通的 DV 证书仅需要验证域名即可签发。生成证书签发请求 (CSR)您必须拥有一个证书签发请求 (Certificate Signing Request,CSR) 才能申请签发 SSL 证书。这里我们使用 OS X,Linux,UNIX 及类似系统为例,UNIX 系操作系统一般已经内置了 OpenSSL 或 GnuTLS 工具链,您需要系统中存在 openssl 的可执行文件:apt install openssl dnf install openssl pacman -S openssl zypper in openssl 交互式生成 CSR首先生成一个 CSR,这个 CSR 将会用于请求 SSL 证书,这里以 2048 位 RSA 证书为例:openssl req -new -newkey rsa:2048 -sha256 -nodes -out example_com.csr -keyout example_com.key -subj "/C=CN/ST=Beijing/L=Beijing/O=Example Inc/OU=Network Dept/CN=example.com" 代码含义C国别代码ST省份、州L城市O公司名OU部门名CNCommon Name,一般是需要签发证书的域名如果您准备签发泛域名证书,则使用 *.example.com 作为 CN (common name):openssl req -new -newkey rsa:2048 -sha256 -nodes -out example_com.csr -keyout example_com.key -subj "/C=CN/ST=Beijing/L=Beijing/O=Example Inc/OU=Network Dept/CN=*.example.com" 如果您希望生成 ECC 证书,命令看起来像这样:openssl ecparam -out example_com.key -name prime256v1 -genkey && openssl req -new -key example_com.key -nodes -out example_com.csr -subj "/C=CN/ST=Beijing/L=Beijing/O=Example Inc/OU=Network Dept/CN=example.com" 如果您准备签发的是多域名证书,请使用下面的命令将所有的域名包含进去openssl req -new -newkey rsa:2048 -sha256 -nodes -out example_com.csr -keyout example_com.key -subj "/C=CN/ST=Beijing/L=Beijing/O=Example Inc/OU=Network Dept/CN=example.com/subjectAltName=DNS.1=sub1.example.com,DNS.2=sub2.example.com,DNS.3=sub.another-example.com" 如果您准备签发的是 IP 证书,则留空 CN (common name)openssl req -new -newkey rsa:2048 -sha256 -nodes -out example_com.csr -keyout example_com.key -subj "/C=CN/ST=Beijing/L=Beijing/O=Example Inc/OU=Network Dept/CN=/subjectAltName=DNS.1=192.0.2.1,DNS.2=192.0.2.2" 购买下单并获取证书文件所有网站购买证书的流程都是一样的,提交 example_com.csr 文件内容,然后填写相关资料,付款,等待邮件通知验证,验证后开通即可。按照 CA/Browser Forum 的规定,普通 DV 单域名或多域名证书验证方式可选 HTTP/HTTPS,域名管理员邮箱以及 DNS 记录 (通常是 TXT 或 CNAME 记录) 进行验证,对于泛域名证书,目前有且仅支持 DNS 记录验证。按照 CA/Browser Forum 的还有一条规定,所有 SSL 证书有效期不得大于 13 个月 (397 天),所有市面上的收费或免费证书都不能超过这个有效期,骗你可以买两年五年证书的都是忽悠你的,实际就是先给你签发一年,第二年免费给你续费,续费的流程和重新签发的流程是一样的,需要重新验证你的域名或组织。这里不多叙述,购买完成后您会得到一个类似 example_com.crt 的文件,这个文件里面包含了证书的公钥,以及证书的其他信息,比如有效期,域名,签发者等等,需要注意的是这个证书链一般是不完整的,也有的商家会发送你完整的证书链,如果你强行配置在 Nginx 上,会造成个别浏览器提示证书错误,这时候可以使用 What's My Chain Cert 这个服务,把 crt 文件内容复制上去,然后下载完整的证书链:这时候会得到一个类似 example_com.chain.crt 的文件,我们把 example_com.key 和 example_com.chain.crt 丢入服务器。此时记得打开 example_com.chain.crt 文件,把除了 example_com.crt 内容以外的 CA 根证书单独命名为一个单独的文件 example_com.ca.crt我们最终得到如下文件:文件名用途/etc/nginx/ssl/example_com.key本地或者服务器上使用 OpenSSL 生出来的证书私钥/etc/nginx/ssl/example_com.crt服务商给你的证书公钥,没用了,可以丢了/etc/nginx/ssl/example_com.chain.crt这个才是完整证书链/etc/nginx/ssl/example_com.ca.crtCA 根证书记得把他们丢在你服务器上,比如创建并放在 /etc/nginx/ssl 目录。配置 Nginx SSL 证书开启 HTTPS如果您按照本站的教程使用烧饼博客打包的 Nginx,那么可以参考如下配置,请注意,只有默认的第一个监听端口的网站才可以在 listen 段使用 default_server 和 reuseport,如果需要添加更多网站,请删除这两个参数:跳转所有的 HTTP 请求:server { listen 80 default_server; listen [::]:80 default_server; location / { return 301 https://$host$request_uri; } } 生成 dhparam 文件:madir -p /etc/nginx/ssl openssl dhparam -dsaparam -out /etc/nginx/ssl/dhparam 2048 嫌弃慢的也可以直接用 Mozilla 给你生成好的:curl https://ssl-config.mozilla.org/ffdhe2048.txt > /etc/nginx/ssl/dhparam 然后监听 443 端口并开启 HTTP/2、HTTP/3、OCSP、TLS 1.2、TLS 1.3 和 HSTS Preload:我们以 example.com 为例,网站目录位于 /var/www/example.comserver { listen 443 ssl default_server; listen [::]:443 ssl default_server; # 开启 HTTP/3 listen 443 quic reuseport; listen [::]:443 quic reuseport; # 开启 HTTP/2 http2 on; server_name example.com; root /var/www/example.com; index index.html; ssl_certificate /etc/nginx/ssl/example_com.chain.crt; ssl_certificate_key /etc/nginx/ssl/example_com.key; ssl_trusted_certificate /etc/nginx/ssl/example_com.ca.crt; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_dhparam /etc/nginx/ssl/dhparam; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; add_header Alt-Svc 'h3=":443"; ma=86400'; add_header Referrer-Policy strict-origin-when-cross-origin; add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; ssl_stapling on; ssl_stapling_verify on; # 国内机器请自行修改 DNS resolver 1.1.1.1 8.8.8.8 valid=300s; resolver_timeout 10s; } 然后测试 Nginx 配置并重新加载:nginx -t nginx -s reload 最终你就可以在浏览器打开 https://example.com/ 查看是否生效了。
2024年08月12日
15 阅读
0 评论
0 点赞
1
...
232
233
234
...
239