OpenSSL 创建自签名证书
Jun 10, 2024
由于 RSA 2048 已经不再安全,使用 RSA 4096 又太慢了,所以这次创建使用 ECC 384 算法的自签名证书。 openssl ecparam -genkey -name secp384r1 -out privkey.pem openssl req -new -key privkey.pem -out csr.pem -config server.cnf Tips: 查看完整的椭圆算法列表 openssl ecparam -list_curves,推荐使用的算法是 prime256v1 和 secp384r1,Let’s Encrypt 的 ECC 证书使用的是 prime256v1。 …
使用 Nginx 反向代理的时候和上游服务器也使用 SSL 连接
Jun 09, 2024
当 Nginx 反向代理和上游服务器部署在不同位置的时候,如果 Nginx 和上游服务器通过 HTTP 通讯,就会存在中间人攻击的安全隐患。 比较安全的方式是反向代理服务器和上游服务器之间也通过 SSL 加密通讯来保证数据安全。 …
Nginx 负载均衡解决同 IP 连接漂移的问题
Jun 07, 2024
问题场景:设置了多个服务器以后,同一个客户端进来的连接会分配到不同的服务器上,在做端口转发的时候就会出现问题,必须保证同一个 IP 来源的请求始终对应同一台服务器。 …
修复 FreeBSD 大版本升级后出现的依赖库不能加载的问题
Jun 05, 2024
AWS 的 Lightsail 提供的 FreeBSD 版本是 13.1 ,使用 freebsd-update 升级到 14.1 后,出现了以下错误: $ pkg update ld-elf.so.1: Shared object "libssl.so.111" not found, required by "pkg" 修复方法,强制重新安装 pkg 修复依赖问题: $ pkg-static install -f pkg pkg-static: Warning: Major OS version upgrade detected. Running "pkg bootstrap -f" recommended Updating FreeBSD repository catalogue... pkg-static: Repository FreeBSD has a wrong packagesite, need to re-create database Fetching meta.conf: 100% 178 B 0.2kB/s 00:01 Fetching data.pkg: 100% 7 MiB 7.3MB/s 00:01 Processing entries: 100% FreeBSD repository update completed. 34088 packages processed. All repositories are up to date. The following 1 package(s) will be affected (of 0 checked): Installed packages to be REINSTALLED: pkg-1.21.3 (ABI changed: 'freebsd:13:x86:64' -> 'freebsd:14:x86:64') Number of packages to be reinstalled: 1 The process will require 4 MiB more space. 12 MiB to be downloaded. Proceed with this action? [y/N]: y [1/1] Fetching pkg-1.21.3.pkg: 100% 12 MiB 12.4MB/s 00:01 Checking integrity... done (0 conflicting) [1/1] Reinstalling pkg-1.21.3... [1/1] Extracting pkg-1.21.3: 100% 然后再强制更新一下 pkg 的数据库: …
使用 OpenSSL 获取某个域名的证书指纹
Jun 04, 2024
先获取服务器的证书,保存为 lvv.me.pem: $ openssl s_client -servername lvv.me -connect lvv.me:443 < /dev/null 2>/dev/null | openssl x509 -outform pem > lvv.me.pem 获取这个证书的指纹信息: $ openssl x509 -noout -fingerprint -sha256 -inform pem -in lvv.me.pem 8D:62:36:52:AD:5A:53:D1:FC:EA:5D:0A:35:CF:2F:60:5C:8C:74:42:2A:C6:AB:11:05:70:FD:A9:85:8A:0B:E0
FreeBSD 修改 lo0 接口的 MTU 值
Jun 02, 2024
FreeBSD 默认的回环接口 lo0 的 MTU 是 16384: lo0: flags=1008049<UP,LOOPBACK,RUNNING,MULTICAST,LOWER_UP> metric 0 mtu 16384 options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6> inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 groups: lo nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL> 可以通过配置提高到 65535: 编辑 /etc/rc.conf 文件,添加下面两行配置: ifconfig_lo0="inet 127.0.0.1/8 mtu 65535" ifconfig_lo0_ipv6="inet6 ::1/128 mtu 65535" 也可以使用 sysrc 来操作 rc.conf: …
使用 PF 防火墙设置端口白名单
Jun 01, 2024
在 Debian 上有很方便的命令工具 ufw 可以设置对外允许访问的端口。 在 FreeBSD 上没有这个命令,但是可以使用 pf 防火墙配置规则达到相同的效果。 先编辑规则文件:/etc/pf.conf …
使用 ping 命令确定最佳 MTU 大小
May 31, 2024
macOS: ping lvv.me -D -s 1464 Linux: ping -4 lvv.me -M do -s 1464 Windows: ping -4 lvv.me -f -l 1464 Linux 和 Windows 的 ping 的 -4 参数表示对 IPv4 地址进行测试,因为设置 Don't Fragment bit 仅在 IPv4 下支持。 如果数字设置过大 ping 就会失败,找到最大的可以 ping 的通的数字,最后加上 28 就是最佳的 MTU 了。 …
Nginx 配置端口转发
May 30, 2024
问题场景 C 是一台有公网 IP 的跳板机,A 和 B 是异地局域网的机器,并且 A、B、C 通过 WireGuard 组成了 VPN 局域网。 S 和 A 在同一个局域网内,并且 S 上运行了一个 Web 服务器,现在需要从 B 的位置访问到 S 的服务。 …
为 sudo 命令设置不一样的 $PATH
May 30, 2024
普通用户和 root 用户的区别,root 用户可以执行 /sbin 和 /usr/sbin 路径下的命令,而且不希望普通用户的 $PATH 变量中有 root 用户专属的路径。 sh 和 bash 已经在默认的配置文件 /etc/profile 中区别好了 root 用户和普通用户的 $PATH: …