宝塔官网的教程需要安装付费插件【堡塔限制访问型证书】,对于一个想要安全,不信任第三方的白嫖怪运维肯定不能忍,所以本篇教程将会在不用到【堡塔限制访问型证书】的前提下使用自签名证书开启访问设备验证(ps:【堡塔限制访问型证书】的原理其实也是自签名证书
在配置之前需要打开宝塔面板的面板SSL功能,登录宝塔面板-->前往面板设置-->最上方的安全设置-->面板SSL--> 面板SSL配置,填写你的ssl证书的对应内容(热知识:pem和crt证书只是后缀名不同,也就是说这里可以填写crt的证书内容)这个证书和下面生成的无关,官方教程指路https://www.bt.cn/bbs/thread-105443-1-1.html
生成root证书(需要安装openssl)
1.1 生成私钥,最后一个选项为res的位数,理论上越大越安全
openssl genrsa -out root.key 2048
1.2 生成证书请求文件(csr),需要输入一些信息(实际上这些信息并没有什么卵用,用来分辨是哪一个证书的,都可以忽略(直接回车)
Country Name:国家代码,中国为CN
State or Province Name:州或省名称
Locality Name:城市名称
Organization Name:组织名称
Organizational Unit Name:组织单位名称
Common Name:常见名,可以写服务器的域名或名字,最好不要忽略
Email Address:邮件地址
A challenge password:证书密码,可以为空
openssl req -new -out root.csr -key root.key
1.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.2 生成证书请求文件(csr),此部分与1.2基本一致,不再赘述,Common Name可以设置为使用者的名字,方便区分
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(下载链接https://www.yubico.com/support/download/yubikey-manager/#h-downloads)
选择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
若报错
Failed connecting to the YubiKey. Make sure the application has the required permissions.
原因可能为系统智能卡服务未启动,右键此电脑->管理->服务和应用程序->服务,找到smart card开头的服务,并设置为自动(右键->属性->启动类型,设置为自动)
3.2部署到服务器
登录宝塔面板后台,点击设置,找到访问设备验证
用记事本打开之前生成的crl和crt文件,并分别粘贴到注销列表(crl) 和 证书(cert)中
勾选我已经了解详情并愿意承担风险,点击保存,配置完成
配置完成之后未插入yubikey或未安装证书是会报错ERR_BAD_SSL_CLIENT_AUTH_CERT
安装好证书或插入yubikey后会提示选择证书,点击确定
装到系统的点击后会直接进入面板,保存到yubikey中的会弹出智能卡的对话框,输入PIN后即可登录成功,linux中需要碰一下yubikey的金属部分,在windows下使用时有一个骚操作,使用yubikey的OTP功能中的静态密码,将短按的静态密码设置为和PIN相同,这样也可以通过触屏金属部分登录(OTP静态密码功能会模拟成hid协议的键盘替你输入PIN)