前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用InspIRCd 2.0和Shaltúre在Ubuntu 14.04上设置IRC服务器

如何使用InspIRCd 2.0和Shaltúre在Ubuntu 14.04上设置IRC服务器

原创
作者头像
姚啊姚
修改2018-10-22 11:24:20
3.6K0
修改2018-10-22 11:24:20
举报

介绍

本教程介绍如何在Ubuntu 14.04上安装和配置InspIRCd 2.0,一个IRC服务器。在您自己的服务器上安装可以让您灵活地管理用户,更改他们的缺口,更改频道属性等。

在本教程结束时,您应该拥有一个功能齐全的IRC服务器,您可以通过大多数IRC客户端连接到该服务器。

准备

请注意,标记为可选的项目将有所帮助,但不是必需的。

如果你有从证书颁发机构付费的SSL证书已经,你需要相应的*.pem*.crt或者*.key文件。

本教程中的所有命令都应以非root用户身份运行。如果命令需要root访问权限,则在命令前面加上sudo

第一步 - 安装InspIRCd

要安装InspIRCd,我们需要为它创建一个新包。对我们来说不幸的是,Ubuntu 14.04存储库中的InspIRCd包已经过时了。幸运的是,有一个脚本可以从源tarball 创建一个可安装的.deb文件。它是开源的,所以我们可以根据我们的要求进行修改。

我们首先安装脚本使用的一些软件包:

代码语言:javascript
复制
sudo apt-get install rake git gnutls-bin libgnutls-dev

现在克隆用于创建包的Git存储库:

代码语言:javascript
复制
git clone https://github.com/SaberUK/inspircd-packages.git

然后,切换到克隆到的目录:

代码语言:javascript
复制
cd ./inspircd-packages

我们需要告诉脚本使用InspIRCd的稳定版本,即版本2.0。我们还需要告诉它我们需要SSL支持。为此,我们导出两个脚本将读取的环境变量并相应地执行操作。

代码语言:javascript
复制
export INSPIRCD_REVISION=insp20
export INSPIRCD_MODULES="regex_posix ssl_gnutls"

此外,删除现有的额外补丁但导致版本2.0出现问题。

代码语言:javascript
复制
rm ./extras/fix-data-and-log-paths.patch

生成要安装的.deb文件:

代码语言:javascript
复制
rake deb

这需要一段时间,完成后,运行以下命令查看创建文件的文件名:

代码语言:javascript
复制
ls *.deb

然后使用以下命令安装.deb文件(使用您在上一步中找到的文件名):

代码语言:javascript
复制
sudo dpkg -i ./inspircd_2.0.20_amd64.deb

我们现在将删除InspIRCd的源文件,因此如果黑客获得访问权限,则无法使用恶意代码重新编译。

代码语言:javascript
复制
cd ~
rm -rf ./inspircd-packages

第二步 - 配置InspIRCd

在InspIRCd实际运行之前,我们需要正确配置它。在此过程中,我们还设置了一些对我们的服务器运行至关重要的选项。有些东西对我们来说是独一无二的,比如网络名称。

创建inspircd.conf文件:

代码语言:javascript
复制
sudo nano /etc/inspircd/inspircd.conf

现在,将以下示例配置文件复制到其中。红色值需要自定义。复制inspircd.conf内容后,我们将从顶部开始并将其更改为正确的值。

代码语言:javascript
复制
# This is just a more or less working example configuration file, please
# customize it for your needs!
<server name="irc.example.com"
        description="Example IRC Server"
        network="ExampleNet"
        id="00A">
​
<admin name="Hameer Abbasi"
       nick="habbasi"
       email="admin@example.com">
​
<bind address="" port="6667" type="clients">
​
<power diepass="SecretPassword" restartpass="OtherSecretPassword" pause="2">
​
<connect allow="*"
         timeout="60"
         flood="20"
         threshold="1"
         pingfreq="120"
         sendq="262144"
         recvq="8192"
         localmax="3"
         globalmax="3">
​
<class name="Shutdown"
       commands="DIE RESTART REHASH LOADMODULE UNLOADMODULE RELOAD">
<class name="ServerLink"
       commands="CONNECT SQUIT RCONNECT MKPASSWD MKSHA256">
<class name="BanControl"
       commands="KILL GLINE KLINE ZLINE QLINE ELINE">
<class name="OperChat"
       commands="WALLOPS GLOBOPS SETIDLE SPYLIST SPYNAMES">
<class name="HostCloak"
       commands="SETHOST SETIDENT SETNAME CHGHOST CHGIDENT">
​
<type name="NetAdmin"
      classes="OperChat BanControl HostCloak Shutdown ServerLink"
      host="netadmin.omega.org.za">
<type name="GlobalOp"
      classes="OperChat BanControl HostCloak ServerLink"
      host="ircop.omega.org.za">
<type name="Helper"
      classes="HostCloak"
      host="helper.omega.org.za">
​
<oper name="habbasi"
      password="secretpass"
      host="*@localhost"
      type="NetAdmin">
​
<files motd="/etc/inspircd/inspircd.motd"
       rules="/etc/inspircd/inspircd.rules">
​
<channels users="20"
          opers="60">
​
<dns server="208.67.222.222" timeout="5">
<dns server="208.67.220.220" timeout="5">
​
<options prefixquit="Quit: "
         noservices="no"
         qaprefixes="no"
         deprotectself="no"
         deprotectothers="no"
         flatlinks="no"
         hideulines="no"
         syntaxhints="no"
         cyclehosts="yes"
         ircumsgprefix="no"
         announcets="yes"
         disablehmac="no"
         hostintopic="yes"
         quietbursts="yes"
         pingwarning="15"
         allowhalfop="yes"
         exemptchanops="">
​
<security hidewhois=""
          userstats="Pu"
          customversion=""
          hidesplits="no"
          hidebans="no"
          operspywhois="no"
          hidemodes="eI"
          maxtargets="20">
​
<performance nouserdns="no"
             maxwho="128"
             softlimit="1024"      
             somaxconn="128"
             netbuffersize="10240">
​
<log method="file"
     type="* -USERINPUT -USEROUTPUT"
     level="default"
     target="/var/log/inspircd.log">
​
<whowas groupsize="10"
        maxgroups="100000"
        maxkeep="3d">
​
<timesync enable="no" master="no">
​
<badnick nick="NickServ" reason="Reserved For Services">    
<badnick nick="ChanServ" reason="Reserved For Services">
<badnick nick="Global" reason="Reserved For S
ervices">
<badnick nick="InfoServ" reason="Reserved For Services">
<badnick nick="OperServ" reason="Reserved For Services">
<badnick nick="SaslServ" reason="Reserved For Services">
<badnick nick="StatServ" reason="Reserved For Services">
<badnick nick="ALIS" reason="Reserved For Services">

我们需要更改一些特定于您和CVM的值。在顶部,找到该server部分。将其更改为所需的主机名,描述和网络名称。该id应进行更改,它有两个数字和字母。例如:

代码语言:javascript
复制
<server name="irc.yourdomain.com"
        description="Example description for the IRC server"
        network="ExampleNet"
        id="46T">

现在,找到admin块。将值更改为IRC网络运营商的信息。操作员用户将能够在网络上执行所有操作。

代码语言:javascript
复制
<admin name="Hameer Abbasi"
       nick="habbasi"
       email="admin@example.com">

我们需要能够重启或关闭服务器。这是在power块中完成的。在这里,您需要更改密码。diepass值是网络管理员用来关闭服务器的密码,restartpass值是他们用来重启服务器的密码。如果输入了错误的密码,则pause值告诉服务器阻止执行这些操作的操作时间(以秒为单位)。继续并更改密码。保留pause默认值。

代码语言:javascript
复制
<power diepass="SecretPassword" restartpass="OtherSecretPassword" pause="2">

找到oper块。我们需要定义运营商帐户和密码。您之前定义的管理员和操作员可以是同一个人。如果您具有静态IP地址或受信任的域名,请更改主机以包含它。如果可能,请不要将此值设置为*@*,这允许操作员从任何地方进行连接。

代码语言:javascript
复制
<oper name="habbasi"
      password="secretPassword"
      host="*@localhost *@your.local.ip.here *@your.local.domain.here"
      type="NetAdmin">

对于该host值,使用空格分隔多个IP地址和域。您还应该添加当前CVM的IP地址和域(如果有)。保存更改,然后关闭文件。

第三步 - 编辑当天的消息

每次用户连接到IRC网络时,都会显示当天的消息。要自定义它,请在/etc/inspircd/位置创建文件inspircd.motd

代码语言:javascript
复制
sudo nano /etc/inspircd/inspircd.motd

在此文件中,添加要向用户显示的日期的消息。通常,您需要一个友好的提醒,通知用户规则。此外,如果网络范围内的任何变化,这是通知他们的地方。例如:

代码语言:javascript
复制
<^>This is ExampleNet. We are the world's newest IRC network.
​
Support us by joining and becoming regular!
​
Be sure to view the rules by typing "/rules" and hitting ENTER.<^>

接下来,编辑规则文件。

代码语言:javascript
复制
sudo nano /etc/inspircd/inspircd.rules

在这个文件中,放置任何规则。这些将在每次输入/rules命令时显示给用户。例如,

代码语言:javascript
复制
1. No children under 13 are allowed to be on this network without the knowledge and consent of their parent or legal guardian.
2. No discussion or links involving pirated software is allowed on the network.
3. No discussion of drugs or other narcotics.
4. No trading of weapons.
5. No porn. There are minors on this network.

第四步 - 启动IRC服务器

在启动IRC服务器之前,我们需要修复权限和文件所有权:

代码语言:javascript
复制
sudo find /etc/inspircd -type d -exec chmod 770 {} \;
sudo find /etc/inspircd -type f -exec chmod 644 {} \;
sudo chown -R irc:irc /etc/inspircd

接下来,我们需要为PID文件和日志文件目录设置正确的权限。

代码语言:javascript
复制
sudo chown -R irc:irc /var/inspircd/
sudo chown -R irc:irc /var/log/inspircd

您现在阅读以启动InspIRCd:

代码语言:javascript
复制
sudo service inspircd start

您应该在结束时收到以下消息,这意味着我们已成功启动InspIRCd:

代码语言:javascript
复制
InspIRCd is now running as 'irc.example.com'[46T] with 1024 max open sockets

第五步 - 测试基本功能

由于基本功能应该已启动,请尝试连接到新创建的IRC网络。我们将引导您在Droplet上安装基于命令行的简单IRC客户端。首先,安装IRSSI。

代码语言:javascript
复制
sudo apt-get install irssi

然后启动IRC客户端:

代码语言:javascript
复制
irssi

您应该能够输入显示[(status)]的底部窗口。请注意,所有IRC命令都以正斜杠开头。要连接到IRC网络,请输入:

代码语言:javascript
复制
/connect irc.example.com

如果未为服务器配置主机名,则可以使用CVM的IP地址。如果您正确配置了服务器,则应该看到类似于以下内容的屏幕:

现在,通过输入以下命令,以操作员身份登录:

代码语言:javascript
复制
/oper habbasi secretPassword

如果它有效,你应该看到“你现在是一个NetAdmin”。这意味着您的操作员权限正在运行。要退出,我们将使用另一个命令:

代码语言:javascript
复制
/quit

推荐的IRC客户

几乎所有设备都有各种各样的IRC客户端。以下是推荐客户的小清单:

  • 适用于Windows,Mac OS X和Linux的HexChat
  • 适用于Windows的mIRC
  • 适用于Mac OS X和iOS的讨论会
  • 适用于Linux和Mac OS X的IRSSI
  • AndChat for Android
  • Kiwi IRC(网络浏览器客户端)

请注意,使用Kiwi IRC,您将无法使用操作权限。Kiwi通过代理连接,不保留您的IP地址。如果您选择仅列出允许连接操作员操作的特定IP地址(建议用于安全性),则oper权限将不适用于Kiwi IRC。

第六步 - 设置SSL(可选)

本部分的目标是保护用户的隐私,并保护密码和其他任何观看传输数据的人都可以看到的东西,如ISP。当然,它是可选的,但强烈推荐。

首先,我们需要将您的SSL证书复制到正确的目录。为此,我们需要在IRC服务器配置目录中创建一个目录。

代码语言:javascript
复制
sudo mkdir /etc/inspircd/sslcerts

接下来,我们需要将相关的SSL证书和密钥复制到新创建的配置目录:

代码语言:javascript
复制
sudo cp /path/to/ssl/private.key /etc/inspircd/sslcerts/private.key
sudo cp /path/to/ssl/certificate.crt /etc/inspircd/sslcerts/cert.pem
sudo cp /path/to/ca/validation.crt /etc/inspircd/sslcerts/ca.pem

如果您使用的是自签名证书,则可以省略复制ca.pem文件。这是在上面的最后一个命令中完成的。

inspircd目录设置适当的权限以保护您的证书,因此InspIRCd将能够读取它们。

代码语言:javascript
复制
sudo find /etc/inspircd -type d -exec chmod 770 {} \;
sudo find /etc/inspircd -type f -exec chmod 644 {} \;
sudo chown -R irc:irc /etc/inspircd

编辑配置文件以告诉它使用SSL:

代码语言:javascript
复制
sudo nano /etc/inspircd/inspircd.conf

找到这个:

代码语言:javascript
复制
<bind address="" port="6667" type="clients">

在绑定部分下方,添加以下行:

代码语言:javascript
复制
<bind address="" port="6697" type="clients" ssl="gnutls">
<gnutls cafile="/etc/inspircd/sslcerts/ca.pem"
        certfile="/etc/inspircd/sslcerts/cert.pem"
        keyfile="/etc/inspircd/sslcerts/private.key"
        priority="SECURE192:-VERS-SSL3.0">

<module name="m_ssl_gnutls.so">

如果您使用的是自签名证书,则可以省略该cafile指令。

重新启动服务器以启用更改。

代码语言:javascript
复制
sudo service inspircd restart

现在应该在端口6697上启用SSL。

第七步 - 测试SSL(可选)

再次,为了测试SSL,我们将使用IRSSI。像以前一样输入以启动IRSSI:

代码语言:javascript
复制
irssi

接下来,输入以下命令以启用SSL连接:

代码语言:javascript
复制
/connect -SSL -SSL_Verify irc.example.com 6697

如果您使用的是自签名证书,则应省略该-SSL_Verify选项。

如果成功,你应该看到这样的屏幕:

/quit退出客户端。

第八步 - 安装Shaltúre服务

您的IRC服务器工作正常,您可以连接到它。但猜猜怎么了?你不能注册nicks。您无法管理频道所有权和角色。您无法发送或接收备忘录。尽管如此,我们还是使用服务。最受欢迎的服务平台是Atheme,但它的开发已经停止,除非修补严重的安全漏洞,否则它不会更新。出于这个原因,我将解释如何安装一个名为Shaltúre的Atheme开发分支。

我们首先安装一个必备软件包:

代码语言:javascript
复制
sudo apt-get install gettext

Shaltúre最好不要以root身份运行。但是如果我们将它作为主要用户运行,可能会产生安全隐患。出于这个原因,我们将为Shaltúre创建一个没有密码的用户。您无法登录此帐户,只能使用该sudo帐户进行访问。

代码语言:javascript
复制
sudo adduser --disabled-password shalture

这会给你一些提示,但你可以按下它们。现在切换到用户:

代码语言:javascript
复制
sudo -i -u shalture

我们继续将目录更改为您的主目录并克隆shalture存储库。我们将克隆到不同的目录,因为我们要在~/shalture目录中安装。

代码语言:javascript
复制
git clone git://github.com/shalture/shalture.git shalture-devel

将您的活动目录更改为该shalture-devel目录并克隆其他所需的存储库。

代码语言:javascript
复制
cd ./shalture-devel
git submodule init
git submodule update

运行设置编译阶段的配置,然后编译并安装:

代码语言:javascript
复制
./configure --enable-contrib
make
make install

在编译第二个命令后需要一些时间,完成后,删除源文件。

代码语言:javascript
复制
cd ~
rm -rf ./shalture-devel/

第九步 - 配置Shaltúre服务

安装完成后,将目录更改为Shaltúre配置目录,以便我们对其进行配置。我们将从示例配置文件开始。

代码语言:javascript
复制
cd ~/shalture/etc
cp shalture.conf.example shalture.conf
nano shalture.conf

在文件中找到:

代码语言:javascript
复制
#loadmodule "modules/protocol/charybdis";

通过删除该行的开头字符#,并将charybdis更换为inspircd:

代码语言:javascript
复制
loadmodule "modules/protocol/inspircd";

接下来,找到:

代码语言:javascript
复制
name = "services.int";

更改int以匹配IRC服务器的域名或IP地址:

代码语言:javascript
复制
name = "services.your_domain_name_or_IP";

找到这一行:

代码语言:javascript
复制
numeric = "00A";

更改numeric的值,使其与您之前提供的服务器id不同,但它必须包含两个数字和一个字母,如下所示:

代码语言:javascript
复制
numeric = "07C";

现在找到:

代码语言:javascript
复制
netname = "misconfigured network";

将值更改为您在InspIRCd配置文件的server块中设置的网络名称netname。例如:

代码语言:javascript
复制
netname = "ExampleNet";

还找到:

代码语言:javascript
复制
hidehostsuffix = "users.misconfigured";

并删除users引号后的所有内容:

代码语言:javascript
复制
hidehostsuffix = "users";

接下来,找到这个:

代码语言:javascript
复制
adminname = "misconfigured admin";

将引号内的部分更改为您的姓名或笔名。

现在,更改网络的联系电子邮件。找:

代码语言:javascript
复制
adminemail = "admin@example.com";

adminemail值更改为您的电子邮件地址。

接下来,找到这个:

代码语言:javascript
复制
registeremail = "noreply@admin.tld";

registeremail值更改为noreply@your_domain_name。这是用户首次在网络上注册昵称时,欢迎电子邮件中显示的电子邮件地址。它也是发送密码重置说明和激活说明的电子邮件。我们已将其设置为不存在的电子邮件,因此它不会占用您的真实收件箱,因为不需要回复这些电子邮件。

找到第一个uplink代码块并在代码块前添加/*,代码块后添加*/以注释掉整块。它应该如下所示:

代码语言:javascript
复制
/* uplink "irc.example.net" {
    // The server name of the ircd you're linking to goes above.

    // host
    // The hostname to connect to.
    host = "127.0.0.1";

    // vhost
    // The source IP to connect from, used on machines with multiple interfaces.
    #vhost = "192.0.2.5";

    // send_password
    // The password sent for linking.
    send_password = "mypassword";

    // receive_password
    // The password received for linking.
    receive_password = "theirpassword";

    // port
    // The port to connect to.
    port = 6667;
}; */

在下一部分(在您评论过的部分之后),找到:

代码语言:javascript
复制
uplink "irc6.example.net" {
        host = "::1";

        // password
        // If you want to have same send_password and accept_password, you
        // can specify both using 'password' instead of individually.
        password = "linkage";

        port = 6667;
};

更改irc6.example.netservices.your_domain_name。(你应该有一个建立一种服务记录。您的域名名称作为准备条件的一部分。)更改密码的东西安全。将端口更改为7001。它现在看起来应该类似于以下内容:

代码语言:javascript
复制
uplink "services.your_domain_name" {
        host = "::1";

        // password
        // If you want to have same send_password and accept_password, you
        // can specify both using 'password' instead of individually.
        password = "SuperSecret123";

        port = 7001;
};

接下来,在nickserv块中找到以下内容:

代码语言:javascript
复制
nickserv {
...
host = "services.int";
...
};

将其更改为您希望NickServ拥有的主机。像这样:

代码语言:javascript
复制
host = "ExampleNet/services/NickServ"

执行与上一个服务类似的更改。每个配置文件中都会有一个块:

  • ChanServ
  • Global
  • InfoServ
  • OperServ
  • SaslServ
  • MemoServ
  • GroupServ
  • StatServ
  • ALIS

这些服务是Shaltúre默认启用的服务。接下来,找到这一行:

代码语言:javascript
复制
operator "jilles" {

并更改它,使其具有您在InspIRCd配置中的oper块中选择的缺口:

代码语言:javascript
复制
operator "habbasi" {

最后,复制以后要使用的默认cron配置文件:

代码语言:javascript
复制
cp /home/shalture/shalture/etc/shalture.cron.example /home/shalture/shalture/etc/shalture.cron

我们已成功配置服务!现在,退出提示以返回到具有sudo权限的非root用户。

代码语言:javascript
复制
exit

第十步 - 配置InspIRCd与Shaltúre一起使用

接下来,我们需要配置InspIRCd以与Shaltúre一起使用。再次编辑InspIRCd配置文件:

代码语言:javascript
复制
sudo nano /etc/inspircd/inspircd.conf

在文件末尾添加这些行:

代码语言:javascript
复制
<bind address="::1" port="7001" type="servers">

<uline server="services.example.com">

<link name="services.example.com"
      ipaddr="::1"
      port="7001"
      allowmask="::1"
      sendpass="password"
      recvpass="password">

<chanprotect noservices="no"
             qprefix="~"
             aprefix="&">

# Modules needed for services to function
<module name="m_chanprotect.so">
<module name="m_halfop.so">
<module name="m_services_account.so">
<module name="m_deaf.so">
<module name="m_spanningtree.so">
<module name="m_globops.so">
<module name="m_cban.so">
<module name="m_svshold.so">
<module name="m_hidechans.so">
<module name="m_servprotect.so">
<module name="m_chghost.so">
<module name="m_namesx.so">
<module name="m_uhnames.so">

请将相应值更改为您的域名,以及您在Shaltúre配置uplink部分中使用的sendpassrecvpass密码。

保存,退出文本编辑器。

我们都配置好了!我们现在要做的就是重启服务器和服务!

代码语言:javascript
复制
sudo service inspircd restart
sudo -i -u shalture /home/shalture/shalture/bin/shalture-services

您应该在最后看到一条消息,说明类似于以下内容:

代码语言:javascript
复制
[2015-07-24 22:21:10] running in background mode from /home/shalture/shalture

这意味着Shaltúre已成功开始。

第十一步 - 测试Shaltúre服务

再次使用IRSSI连接到服务器,就像在步骤5或7中一样。您应该看到类似于以下内容的屏幕:

这意味着Shaltúre正常工作并成功链接到InspIRCd。

第十二步 - 让InspIRCd和Shaltúre在重启时保持不变

我们已经配置了您的IRC服务器。但Shaltúre没有作为服务安装,这意味着它将无法重新启动。要做到这一点,请输入:

代码语言:javascript
复制
sudo -i -u shalture crontab -e

如果您收到有关使用哪个编辑器的提示,请按2选择nano,或者您希望的任何其他编辑器。

在文件的末尾,添加以下内容:

代码语言:javascript
复制
*/5 * * * * /home/shalture/shalture/etc/shalture.cron >/dev/null 2>&1

这将每五分钟检查一次,看看服务是否正在运行。如果没有,它就会启动它们。但InspIRCd也没有被添加到启动列表中,现将它添加到列表中:

代码语言:javascript
复制
sudo update-rc.d inspircd defaults

现在,InspIRCd和Shaltúre都将在启动时运行!

结论

InspIRCd允许您设置自定义的IRC网络,您可以进行管理了。Shaltúre通过添加昵称所有权,频道所有权,备忘录等功能来补充它。

要进一步配置IRC服务器,请查看InspIRCd wiki或Shaltúre中包含的示例配置文件。

想要了解更多关于Ubuntu的开源信息教程,请前往腾讯云+社区学习更多知识。

参考文献:《How To Set Up an IRC Server on Ubuntu 14.04 with InspIRCd 2.0 and Shaltúre》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 第一步 - 安装InspIRCd
  • 第二步 - 配置InspIRCd
  • 第三步 - 编辑当天的消息
  • 第四步 - 启动IRC服务器
  • 第五步 - 测试基本功能
    • 推荐的IRC客户
    • 第六步 - 设置SSL(可选)
    • 第七步 - 测试SSL(可选)
    • 第八步 - 安装Shaltúre服务
    • 第九步 - 配置Shaltúre服务
    • 第十步 - 配置InspIRCd与Shaltúre一起使用
    • 第十一步 - 测试Shaltúre服务
    • 第十二步 - 让InspIRCd和Shaltúre在重启时保持不变
    • 结论
    相关产品与服务
    SSL 证书
    腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档