假设你已经开开心心搭好了Vault服务器,想配置一个Azure AD登录,打开了Azure Authentication,结果发现它是给Azure虚拟机认证自己用的。这样当然不行。要使用Azure AD认证用户,必须使用OIDC(OpenID Connect)认证流程。
使用Azure Active Directory登录Hashicorp Vault
发表评论
假设你已经开开心心搭好了Vault服务器,想配置一个Azure AD登录,打开了Azure Authentication,结果发现它是给Azure虚拟机认证自己用的。这样当然不行。要使用Azure AD认证用户,必须使用OIDC(OpenID Connect)认证流程。
准备一个私钥(.pem)和对应的证书(.crt)文件。注意证书里面只能有私钥对应的那个证书,不应该有证书链。需要证书链的话单独放一个文件里面。
先用OpenSSL把它转成PKCS#12格式。
1 |
openssl pkcs12 -export -out asa.example.com.pfx -inkey asa.example.com.pem -in asa.example.com.crt -CAfile cert-chain.crt |
输入任意密码两次。如果是用ASDM导入证书的话,就可以直接选中生成的pfx文件导入了。如果要从命令行导入的话继续往下看。
然后Base64一下:
1 |
openssl base64 -in asa.example.com.pfx -out asa.example.com.pfx.base64 |
导入ASA:
1 2 3 4 5 6 7 8 9 10 |
Type help or '?' for a list of available commands. asa> enable Password: asa# configure terminal asa(config)# crypto ca import 证书名 pkcs12 密码 Enter the base 64 encoded pkcs12. End with the word "quit" on a line by itself: <粘贴 base64 过的文件> quit INFO: Import PKCS12 operation completed successfully |
换上新的证书:
1 2 3 4 |
asa(config)# ssl trust-point newcert inside asa(config)# ssl trust-point newcert outside asa(config)# no crypto ikev2 remote-access trustpoint oldcert asa(config)# crypto ikev2 remote-access trustpoint newcert |
删掉原来的证书:
1 |
asa(config)# no crypto ca trustpoint oldcert |
然后记得把根证书导入一下。ASDM的话在Device Management -> Certificate Management -> CA Certificates里面导入PEM格式的证书链即可,会自动应用上。
总有那么几个程序一定要用ncurses在终端画窗口,即使它完全可以在后台运行。这时候我们就需要欺骗它一下,假装它在一个TTY里面运行。有两点需要设置:
TERM=linux
例如一个简单的rtorrent (<0.9.7) systemd unit设置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# cat [email protected] [Unit] Description=rTorrent After=network-online.target [Service] User=%i Environment=TERM=linux ExecStartPre=/bin/sh -c "/usr/bin/mkdir -p \"$HOME/.local/share/rtorrent/session\"" ExecStart=/usr/bin/script -qefc '/usr/bin/rtorrent -s $HOME/.local/share/rtorrent/session -o session=$HOME/.local/share/rtorrent/session' /dev/null WorkingDirectory=~ Restart=on-failure [Install] WantedBy=multi-user.target |
注:rtorrent 0.9.7开始可以用-o system.daemon.set=true
,所以不需要这么麻烦:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# cat [email protected] [Unit] Description=rTorrent After=network-online.target [Service] User=%i ExecStartPre=/bin/sh -c "/usr/bin/mkdir -p \"$HOME/.local/share/rtorrent/session\"" ExecStart=/bin/sh -c "/usr/bin/rtorrent -s $HOME/.local/share/rtorrent/session -o session=$HOME/.local/share/rtorrent/session -o system.daemon.set=true" WorkingDirectory=~ Restart=on-failure [Install] WantedBy=multi-user.target |
唯一需要注意的地方是必须复制安装文件到/var/tmp
,否则会报文件验证失败的错误。