Proxmox 服务器的自签名证书的SSL设定
文章目录
在使用Proxmox服务器时,会使用SSL访问它的WEB管理平台。
由于默认的安装中SSL证书没有签署,所以浏览器老是会弹出证书错误,是否继续之类的错误信息,很是碍眼。
为了在一定程度上避免这种现象,本文使用自签名的证书来配置Promox的HTTPS。
即使点了“仍然继续”,https前面还是会出现下面的小红叉叉,难看的很:
概念
关于自签名的证书,啰嗦几句。
常规的证书(那些NB的CA机构颁发的证书),允许使用该证书的服务器向用户说:
> 你应该信任我,因为你信任的机构(NB的CA机构)是这么说的
而自签名的证书就比较无耻了,它允许使用该证书的服务器对用户说:
> 你应该信任我,因为这是我说的
我们访问各种网银是,必须都是HTTPS(如果你不是,那你悲剧了),而他们的证书都是常规的证书。而我天朝的12306,好像是使用自签名的证书(个中原因,you know…)。
前提
首先已经安装好了Proxmox,而且网络,IP都已经配置好了。
假设,Proxmox服务器的IP是: 10.194.153.6
为了简单起见,Proxmox服务器没有绑定域名,总是以IP访问。
生成证书
本例中的证书是自我签署的证书。在默认的状态下,自我签署的证书在浏览器里会弹出警告,而不是讨人厌的错误提示。如果吧自我签署的证书事前安装好的话,就可以正常的使用了。
因此,如果只是(公司,实验室,局域网)内部使用的话,使用自我签署的证书是没有问题的。如果需要开放给外部访问,最好还是到CA认证机构去购买和申请正规的证书吧(不过据说很贵)。
闲话少叙,开始干活
生成私钥
~# cd /etc/ssl/certs
/etc/ssl/certs# openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus
.....................................................................++++++
.......++++++
e is 65537 (0x10001)
Enter pass phrase for server.key: # 输入pass phrase
Verifying - Enter pass phrase for server.key: # 再次输入
从私钥中删除pass phrase
/etc/ssl/certs# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:# 输入刚才输入的pass phrase
writing RSA key
生成证书
/etc/ssl/certs# openssl req -new -days 3650 -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN #国家代码
State or Province Name (full name) [Some-State]:LN #区域代码,也就是我们所谓的省
Locality Name (eg, city) []:DL #城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]: TESTWork #公司名称,随便填
Organizational Unit Name (eg, section) []:VM Manager #部门名称,随便写
Common Name (eg, YOUR name) []:10.193.153.6
#服务器全名(FQDN),本例中因为都使用的是IP,所以直接把IP写上了。
#这是证书生成过程中最重要的一步,这里填写的Common Name必须要保证与apache中配置的Server name一致,
#否则生成后的证书还是不好用。
#如果你使用的Proxmox已经在DNS服务器里面绑定了域名,比如:proxmox.abc.com
#而且在apache配置中,虚拟主机的Server Name也是:proxmox.abc.com
#那末,这一步,就必须填写:proxmox.abc.com,这样生成的证书才好使。
Email Address []:admin@10.194.153.6 #管理员邮件地址,随便填。
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: #这里不输入也可以,直接回车
An optional company name []: #这里不输入也可以,直接回车
创建自签署证书
/etc/ssl/certs# openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
Signature ok
subject=/C=CN/ST=LN/L=DL/O=PSDCD/OU=10.194.153.6/CN=10.194.153.6
Getting Private key
修改证书和密钥的权限
/etc/ssl/certs# chmod 400 server.*
SSL设置
Promox的apache配置在下面的位置:
/etc/apache2/sites-enabled/pve.conf
/etc/apache2/sites-enabled/pve-redirect.conf
修改这两个个文件。
确认Server Name是否和刚次生成证书是输入的Common Name一致
不一致的情况下,有两条道:重新生成证书并签署,或者修改此处
1 | ServerName 10.194.153.6 |
配置刚才生成的证书和公钥到apache中
1 | <VirtualHost *:8006> |
重启apache
/etc/apache2/sites-enabled# apache2ctl restart
测试(IE这货就不测了,Proxmox不支持IE,赞)
Firefox
打开promox的WEB管理平台,给出了警告。点击“添加例外”。
点击确认“安全例外”:
终于看到了久违的登陆画面,注意,地址栏里面的https前不再会显示大红叉,而是正常的一个锁的样子了,说明自签名证书成功了。
Chrome的结果
(END)