admin 宝塔官网的教程需要安装付费插件【堡塔限制访问型证书】,对于一个想要安全,不信任第三方的白嫖怪运维肯定不能忍,所以本篇教程将会在不用到【堡塔限制访问型证书】的前提下使用自签名证书开启访问设备验证(ps:【堡塔限制访问型证书】的原理其实也是自签名证书 在配置之前需要打开宝塔面板的面板SSL功能,登录宝塔面板--前往面板设置--;最上方的安全设置--面板SSL--面板SSL配置,填写你的ssl证书的对应内容(热知识:pem和crt证书只是后缀名不同,也就是说这里可以填写crt的证书内容)这个证书和下面生成的无关,官方教程指路 生成root证书(需要安装openssl)1.1 生成私钥,最后一个选项为res的位数,理论上越大越安全(建议2048) openssl genrsa -out root.key 2048 2.生成证书请求文件(csr),需要输入一些信息(实际上这些信息并没有什么卵用,用来分辨是哪一个证书的,都可以忽略(直接回车) Country Name:国家代码,中国为CN State or Province Name:州或省名称 Locality Name:城市名称 Organization Name:组织名称 Organizational Unit Name:组织单位名称 Common Name:常见名,可以写服务器的域名或名字,最好不要忽略 Email Address:邮件地址A challenge password:证书密码,可以为空An optional company name:可选组织名称 openssl req -new -out root.csr -key root.key 3.生成root证书,最后一个数字为证书有效期,单位为天 openssl x509 -req -in root.csr -out root.crt -signkey root.key -CAcreateserial -days 365000 使用root证书签发客户端证书,这个证书是用来登录服务器的 2.1 生成私钥,最后一个选项为res的位数,理论上越大越安全,但是yubikey最大支持2048位,并且2048完全够用 openssl genrsa -out client.key 2048 2.2 生成证书请求文件(csr),此部分与1.2基本一致,不再赘述,Common Name可以设置为使用者的名字,方便区分 openssl req -new -out client.csr -key client.key 2.3 使用 1 生成的root证书签发客户端证书,最后一个数字为证书有效期,单位为天,推荐为365,过期重新生成 openssl x509 -req -in client.csr -out client.crt -signkey client.key -CA root.crt -CAkey root.key -CAcreateserial -days 365 2.4 将证书转换为p12格式(PKCS#12)方便使用,推荐设置一个密码,防止证书泄露 openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12 部署 3.1 为了防止无法进入服务器,首先部署客户端证书(若使用yubikey不推荐安装到系统) 3.1.1 部署到系统 windows:下载,双击打开后一路默认,提示输入密码时输入前文设置的密码 linux:以firefox浏览器为例,右上角三个横线-设置-高级-证书-点击查看证书,选择个人,点击导入,提示输入密码时输入前文设置的密码 3.1.2 部署到yubikey 打开YubiKey Manager,点击Applications并选择PIV(下载链接) 选择Change PIN修改PIN及PUK,PIN默认为123456,PUK默认为12345678,如果是新的可以勾选Use default使用默认密码 PIN:访问或修改证书密钥时,需要先输PIN码,至少6个字符,最多8个ASCII字符,输错3次被锁定,防止穷举爆破 PUK:输错3次被PIN码被锁定后,可使用PUK码恢复PIN码,同样的输错3次被锁定,另外还可以禁用PUK码 修改好之后可以导入证书了,选择Configure Certificates-Authentication (Slot 9a)-Import,导入证书,导入时需要依次输入证书密码和PIN PIV选项如果为灰色,点击Interfaces并勾选PIV 若报错 原因可能为系统智能卡服务未启动 右键此电脑-管理-服务和应用程序-服务,找到smart card开头的服务,并设置为自动(右键-属性-启动类型,设置为自动) 3.2部署到服务器 登录宝塔面板后台,点击设置,找到访问设备验证 用记事本打开之前生成的crl和crt文件,并分别粘贴到注销列表(crl) 和 证书(cert)中(如无crl可打一个空格即可) 勾选我已经了解详情并愿意承担风险,点击保存,配置完成 配置完成之后未插入yubikey或未安装证书是会报错ERR_BAD_SSL_CLIENT_AUTH_CERT 安装好证书或插入yubikey后会提示选择证书,点击确定 安装到系统的点击后会直接进入面板,保存到yubikey中的会弹出智能卡的对话框,输入PIN后即可登录成功,linux中需要碰一下yubikey的金属部分,在windows下使用时有一个骚操作,使用yubikey的OTP功能中的静态密码,将短按的静态密码设置为和PIN相同,这样也可以通过触屏金属部分登录(OTP静态密码功能会模拟成hid协议的键盘替你输入PIN)