首页
Search
1
Linux 下 Bash 脚本 bad interpreter 报错的解决方法
69 阅读
2
Arch Linux 下解决 KDE Plasma Discover 的 Unable to load applications 错误
51 阅读
3
Arch Linux 下解决 KDE Plasma Discover 的 Unable to load applications 错误
42 阅读
4
如何在 Clash for Windows 上配置服务
40 阅读
5
如何在 IOS Shadowrocket 上配置服务
40 阅读
clash
服务器
javascript
全部
游戏资讯
登录
Search
加速器之家
累计撰写
1,061
篇文章
累计收到
0
条评论
首页
栏目
clash
服务器
javascript
全部
游戏资讯
页面
搜索到
1061
篇与
的结果
2024-08-12
Apache 配置 SSL 证书
本文将介绍购买 SSL 证书并在 Apache 2 配置的姿势。购买证书并拿到所有文件这里的步骤和 Nginx 配置 SSL 证书的步骤一样,只是把证书放在了一个新的目录下,比如我们可以新建一个文件夹 /etc/apache2/ssl 然后把文件都丢进去。其中 dhparam 需要和证书文件放一起,可以使用命令:curl https://ssl-config.mozilla.org/ffdhe2048.txt >> /etc/nginx/ssl/example_com.chain.crt 注意两个剪头 >> 符号代表合并文件我们最终得到如下文件:文件名用途/etc/apache2/ssl/example_com.key本地或者服务器上使用 OpenSSL 生出来的证书私钥/etc/apache2/ssl/example_com.crt服务商给你的证书公钥,没用了,可以丢了/etc/apache2/ssl/example_com.chain.crt这个才是完整证书链/etc/apache2/ssl/example_com.ca.crtCA 根证书配置 Apache SSL 证书开启 HTTPS同样我们参考 Mozilla 的 SSL 配置生成器。把所有 HTTP 请求跳转 HTTPS<VirtualHost *:80> RewriteEngine On RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/ RewriteRule ^(.*)$ https://%{HTTP_HOST}$1[R=301,L] </VirtualHost> 然后使用现代化的 SSL 配置,开启 HTTP/2、OCSP、TLS 1.3 和 HSTS我们以 example.com 为例,网站目录位于 /var/www/example.com<VirtualHost *:443> ServerName example.com DocumentRoot /var/www/example.com DirectoryIndex index.html ErrorLog ${APACHE_LOG_DIR}/example.com.error.log CustomLog ${APACHE_LOG_DIR}/example.com.access.log combined <Directory /var/www/example.com> Options FollowSymLinks AllowOverride All Require all granted </Directory> SSLEngine on SSLCertificateFile /etc/apache2/ssl/example_com.chain.crt SSLCertificateKeyFile /etc/apache2/ssl/example.com.key Protocols h2 http/1.1 Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" Header always set X-Frame-Options SAMEORIGIN Header always set X-Content-Type-Options nosniff Header set X-XSS-Protection "1; mode=block" Header always set Referrer-Policy strict-origin-when-cross-origin </VirtualHost> # intermediate configuration SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite 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 SSLHonorCipherOrder off SSLSessionTickets off SSLUseStapling On SSLStaplingCache "shmcb:logs/ssl_stapling(32768)" 接着检查配置并重启 Apache 2apache2ctl configtest systemctl restart apache2 最终你就可以在浏览器打开 https://example.com/ 查看是否生效了。
2024年08月12日
5 阅读
0 评论
0 点赞
2024-08-12
使用 acme.sh 配置自动续签 SSL 证书
本文将介绍使用 acme.sh 配置自动续签的 SSL 证书。之前介绍了 Nginx 和 Apache 手工配置 SSL 证书的方法,美中不足的是,基本上大多数商业 SSL 证书都需要手工申请和签发,能支持 ACME 自动签发的并不多,有也略贵,比如 ZeroSSL 高级版和 Digicert 等,那么对于大多数懒人来说,免费的 Let's Encrypt、Buypass 和 ZeroSSL 免费版就是不错的选择。自动签发和手工签发证书的对比功能自动签发手工签发有效期3 个月至 6 个月30 天到 1 年难度不容易容易友好度不友好友好适合懒人是否系统集成方便不方便后台管理大多数没有大多数都有所以我们建议如果您对服务器有完全控制权,那么自动签发的证书比较适合懒人运维,如果是长期运营的网站和项目,手工签发的证书对新手更友好,请自行选择。安装 acme.shacme.sh 是一个集成了 ACME 客户端协议的 Bash 脚本,作者是 @neilpangxa,按照官方文档说明,我们直接在 Linux 下安装。curl https://get.acme.sh | sh -s email=username@example.com 如果是国内的机器,可以使用拖回源码直接安装:git clone --depth 1 https://github.com/acmesh-official/acme.sh.git cd acme.sh ./acme.sh --install -m username@example.com 请注意替换 username@example.com 为你自己的邮箱,避免无法收到上游证书的邮件通知,比如 Let's Encrypt 偶尔会错发证书,然后就会邮件通知你,这时候就需要重新签发一次证书了。安装完成后重新加载 Bash:source ~/.bashrc 然后也可以开启自动更新:acme.sh --upgrade --auto-upgrade 选择默认 CA目前 acme.sh 支持 5 个正式环境 CA,分别是 Let's Encrypt、Buypass、ZeroSSL、SSL.com 和 Google Public CA,默认使用 ZeroSSL,如果需要更换可以使用如下命令:切换 Let's Encryptacme.sh --set-default-ca --server letsencrypt 切换 Buypassacme.sh --set-default-ca --server buypass 切换 ZeroSSLacme.sh --set-default-ca --server zerossl 切换 SSL.comacme.sh --set-default-ca --server ssl.com 切换 Google Public CAacme.sh --set-default-ca --server google 如果已有 ZeroSSL 帐号,可以在后台控制面板拿到 API Key,然后执行如下命令apt install jq curl -s -X POST "https://api.zerossl.com/acme/eab-credentials?access_key=你的API_Key" | jq 终端会输出如下内容{ "success": true, "eab_kid": "kid字符串", "eab_hmac_key": "hmac_key字符串", } 然后手工添加帐号acme.sh --register-account --server zerossl \ --eab-kid kid字符串 \ --eab-hmac-key hmac_key字符串 Google Public CA 需要按照官方博客申请内测,然后获取 Key。几个 CA 的简单对比功能LEBuypassZeroSSLSSL.comGoogle Public CA有效期90 天180 天90 天90 天90 天多域名支持支持,最多 5 个支持收费支持支持泛域名支持不支持支持收费支持支持Rate Limit有有收费无未知有GUI 管理否否有有无ECC 证书链否否有未知无客户支持社区收费收费收费收费简单来说,如果没有特殊需求,可以选择 Let's Encrypt,如果服务器在国内,可以选择 ZeroSSL 或 Buypass,如果愿意付费得到更好的服务和保障,可以选择 ZeroSSL 和 SSL.com,如果面向欧盟用户,可以选择 Buypass 和 ZeroSSL。注意:经过测试 Google Public CA 的 ACME 验证域名在国内是无法访问的,只有国外服务器才可以申请,申请完成后的证书并无影响。使用 HTTP 验证签发证书首先我们要做一下准备工作,假设你域名是 example.com,解析到你的服务器让其生效后,我们建立一个目录:mkdir -p /var/www/letsencrypt 我们的目的是绑定 http://example.com/.well-known/acme-challenge 到这个目录。如果您用的 Nginx,那么新建一个配置文件:server { listen 80; listen [::]:80; server_name example.com; location /.well-known/acme-challenge { root /var/www/letsencrypt; } location / { rewrite^/(.*)$ https://$host/$1 permanent; } } 如果您使用的 Apache,那么新建一个配置文件:<VirtualHost *:80> ServerName example.com DocumentRoot /var/www/letsencrypt RewriteEngine On RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/ RewriteRule ^(.*)$ https://%{HTTP_HOST}$1[R=301,L] </VirtualHost> 我们以 Let's Encrypt 为例,直接在终端运行acme.sh --issue -d example.com -w /var/www/letsencrypt 如果希望签发 ECC 证书,则运行acme.sh --issue -d example.com --keylength ec-256 -w /var/www/letsencrypt 如果需要多个域名,则运行acme.sh --issue -d example.com -d example.org -w /var/www/letsencrypt 然后就等他执行完,直到出现 Cert success 的提示然后我们可以安装证书Nginxacme.sh --install-cert -d example.com \ --key-file /etc/nginx/ssl/example.com.key \ --fullchain-file /etc/nginx/ssl/example.com.crt \ --ca-file /etc/nginx/ssl/example.com.ca.crt \ --reloadcmd "systemctl restart nginx" 对应的 Nginx 配置指定证书文件ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key; ssl_trusted_certificate /etc/nginx/ssl/example.com.ca.crt; Apacheacme.sh --install-cert -d example.com \ --key-file /etc/apache2/ssl/example.com.key \ --fullchain-file /etc/apache2/ssl/example.com.crt \ --ca-file /etc/apache2/ssl/example.com.ca.crt \ --reloadcmd "curl https://ssl-config.mozilla.org/ffdhe2048.txt >> /etc/apache2/ssl/example.com.crt && systemctl restart apache2" 对应的 Apache 配置指定证书文件SSLCertificateFile /etc/apache2/ssl/example.com.crt SSLCertificateKeyFile /etc/apache2/ssl/example.com.key 如果是 ECC 证书,则安装的时候需要带上 --ecc 参数,比如acme.sh --install-cert --ecc -d example.com \ --key-file /etc/nginx/ssl/example.com.key \ --fullchain-file /etc/nginx/ssl/example.com.crt \ --ca-file /etc/nginx/ssl/example.com.ca.crt \ --reloadcmd "systemctl restart nginx" 注意如果是多个域名,也仅需要在 -d 参数后面指定第一个域名即可。使用 DNS 验证签发证书有时候因为不想暴露一些二级域名,或者希望在多台机器上部署同一个域名的证书,这时候就需要用到 DNS 插件了,acme.sh 支持几十种 DNS 插件。这里以 Cloudflare 为例,登录 Cloudflare Dash 后在 API Token 菜单里添加一个 API Token:然后选择 Edit Zone DNS 的模板选择你要编辑的域名,也可以加入你服务器的 IP 作为白名单完成后会给你一串字符,把他复制下来,需要填入下方的 CF_Token 参数然后进入域名的管理页面,在右侧 API 列找到 Account ID 和 Zone ID 并复制接着在终端运行export CF_Token="复制下来的 Token" export CF_Account_ID="复制下来的 Account ID" export CF_Zone_ID="复制下来的 Zone ID" 然后开启 acme.sh 的 DNS API 模式申请证书acme.sh --issue --dns dns_cf -d example.com -d *.example.com 安装证书方法同上,另外吐槽下,很多教程会让你用 Cloudflare 的全局 Global API Key,真的是,风险太大了,最后怎么被黑的都不知道 = =如果不想使用第三方的 DNS 服务完全可以自建 acme-dns 或者 PowerDNS,篇幅有限,我们之后再介绍。
2024年08月12日
5 阅读
0 评论
0 点赞
2024-08-12
Debian 10 Buster 升级 Debian 11 Bullseye
本文将指导如何升级 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 源,替换 buster 为 bullseye:sed -i 's/buster\/updates/bullseye-security/g;s/buster/bullseye/g' /etc/apt/sources.list sed -i 's/buster/bullseye/g' /etc/apt/sources.list.d/*.list 如果是 Debian 9 更新到 Debian 10:sed -i 's/stretch/buster/g' /etc/apt/sources.list sed -i 's/stretch/buster/g' /etc/apt/sources.list.d/*.list 默认的系统 apt 源文件 /etc/apt/sources.list 应该是类似这样的:deb http://deb.debian.org/debian bullseye main contrib non-free deb-src http://deb.debian.org/debian bullseye main contrib non-free deb http://security.debian.org/debian-security bullseye-security main contrib non-free deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free deb http://deb.debian.org/debian bullseye-updates main contrib non-free deb-src http://deb.debian.org/debian bullseye-updates main contrib non-free 国内服务器可以替换 deb.debian.org 和 security.debian.org 为 mirrors.tuna.tsinghua.edu.cn然后我们再次执行更新系统:apt update apt upgrade -y apt dist-upgrade -y 更新过程种会提示一些软件是否需要自动重启,选 Yes 即可,以及一些软件的配置文件是否需要更新,按照自己的情况选择即可,默认回车即视为使用旧的配置文件,一般会出现在 OpenSSH 等软件的更新上。提示是否自动重启服务:提示是否更新软件配置文件:提示是否更新 OpenSSH 配置文件:注意某些软件,比如 Mariadb 更新后可能会更新 systemd 服务配置,此时我们需要执行 systemctl daemon-reload 重新加载配置:更新后删除不必要的软件和依赖:apt autoclean apt autoremove -y 然后我们使用 reboot 命令重启系统,耐心等待后,查看最新的系统版本:root@debian ~ # cat /etc/debian_version 11.2 root@debian ~ # lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 11 (bullseye) Release: 11 Codename: bullseye root@debian ~ # uname -a Linux server 5.10.0-11-amd64 #1 SMP Debian 5.10.92-1 (2022-01-18) x86_64 GNU/Linux 这时我们就已经更新到了最新的 Debian 11 Bullseye 和内核了。
2024年08月12日
6 阅读
0 评论
0 点赞
2024-08-12
Debian 双栈网络时开启 IPv4 优先
本文理论上适合任何 Linux 系统,其他系统未经测试,请自行测试使用。背景介绍双协议栈技术就是指在一台设备上同时启用 IPv4 协议栈和 IPv6 协议栈,这样就可以同时使用 IPv4 和 IPv6 的网络。所有现代化的操作系统和浏览器均会以 IPv6 优先,只有 IPv6 无法访问的时候才会尝试访问 IPv4,某些特定的应用和场景下,我们并不想要 IPv6 优先,这时候就需要修改一些配置文件让 IPv4 优先。修改 /etc/gai.conf在 Debian 等 Linux 系统下,有一个 /etc/gai.conf 文件,用于系统的 getaddrinfo 调用,默认情况下,它会使用 IPv6 优先,如果您安装了 curl 并且本地支持 IPv6,那么可以使用 curl ip.sb 测试:root@debian ~ # curl ip.sb 2001:db8::2 效果等同于 curl ip.sb -6如果你不想使用 IPv6 优先,可以在这个文件中找到:#precedence ::ffff:0:0/96 100 取消注释,修改为:precedence ::ffff:0:0/96 100 一句话命令:sed -i 's/#precedence ::ffff:0:0\/96 100/precedence ::ffff:0:0\/96 100/' /etc/gai.conf 此时再使用 curl ip.sb 测试root@debian ~ # curl ip.sb 192.0.2.2 效果等同于 curl ip.sb -4有时候又会需要强制 IPv6 优先 (怎么有些系统和用户那么奇怪?),因为目前 IANA 分配的公网 IPv6 还未进行到 3000:0000::/4,所以我们只要把这段之前的 IPv6 加到优先级列表即可,加入这两行 label 的优先级:label 2002::/16 1 label 2001:0::/32 1 禁用 IPv6有一些极端情况下,我们可能需要禁止系统的 IPv6 功能,这时候就需要修改 /etc/sysctl.conf 文件,首先找到你的网卡名称,这里以 eth0 为例,然后加入如下内容:net.ipv6.conf.all.autoconf = 0 net.ipv6.conf.default.autoconf = 0 net.ipv6.conf.all.accept_ra = 0 net.ipv6.conf.default.accept_ra = 0 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 net.ipv6.conf.eth0.disable_ipv6 = 1 如果需要其他网卡则更改或添加 net.ipv6.conf.eth0.disable_ipv6 = 1 即可。一句话命令cat >> /etc/sysctl.conf << EOF net.ipv6.conf.all.autoconf = 0 net.ipv6.conf.default.autoconf = 0 net.ipv6.conf.all.accept_ra = 0 net.ipv6.conf.default.accept_ra = 0 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 net.ipv6.conf.eth0.disable_ipv6 = 1 EOF 注意 cat 命令后的 >> 即为添加文件内容,如果使用 > 则是覆盖文件内容。然后使用 sysctl -p 来重新加载配置文件,此时查看 ip a 就可以发现 IPv6 已经被禁止了。使用前,我们可以看到无论是本地还是公网网卡都有 inet6,即都有 IPv6 地址:使用后,无论本地还是公网网卡均无 IPv6 地址:其他系统和软件Windows 下请参考这篇回答Firefox 下打开 about:config 然后把 network.dns.disableIPv6 改成 true 即可禁止 Firefox 请求 IPv6
2024年08月12日
7 阅读
0 评论
0 点赞
2024-08-12
Debian 使用 apt 时 Could not get lock /var/lib/dpkg/lock-frontend 的解决方法
本文同样适合 Ubuntu 系统,请使用 root 用户进行操作。问题复现很多时候我们不挂个 screen 就盲目更新服务器,然后遇到断网停电等不可控因素时,apt 进程就会一直卡住,导致我们重新进入服务器的时候,会遇到类似以下的错误提示:E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it? E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it? E: Could not get lock /var/cache/apt/archives/lock - open (11: Resource temporarily unavailable) E: Unable to lock the download directory E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it? 解决办法一此时我们只要使用 kill 命令,关闭 apt 进程即可,首先查找 apt 进程的 pid:root@debian ~ # ps aux | grep -i apt root 5016 0.1 1.2 66788 50096 ? S Feb18 7:25 apt-get upgrade -y root 24835 0.0 0.0 6208 824 pts/2 S+ 08:36 0:00 grep --color=auto -i apt 我们可以看到这台服务器上的 apt 进程编号为 5016,然后直接 kill 它:kill 5016 接着我们就可以重新使用 apt update 等命令了,如果更新途中遇到类似这样的错误:E: dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem. 那么直接按照提示运行 dpkg --configure -a 即可解决方法二还有个比较暴力的解决方法,直接删除这几个文件rm /var/lib/dpkg/lock-frontend rm /var/lib/dpkg/lock rm /var/cache/apt/archives/lock 然后重新运行 apt update 即可,但是如果万一有其他程序的进程也在操作 apt 缓存,那么这个方法可能会无效,请自行承担风险。
2024年08月12日
7 阅读
0 评论
0 点赞
1
...
209
210
211
...
213