Active Directory环境下为Ubuntu Apache内网站点生成可被Windows客户端信任的SSL证书相关咨询
Active Directory环境下为Ubuntu Apache内网站点生成可被Windows客户端信任的SSL证书相关咨询
嘿,针对你在Active Directory环境里给Ubuntu上的Apache内网站点配置SSL证书的几个问题,我给你拆解清楚,都是域环境里常用的实操方案:
一、怎么生成符合要求的SSL证书?
在AD域环境里,**最优解是用Active Directory证书服务(AD CS)**来签发证书,比自签证书省心太多,步骤如下:
- 先确认你的AD域里已经部署了企业级CA(如果还没装,直接在域控制器上添加AD CS角色,选择「企业CA」类型就行,按向导走很简单)
- 回到Ubuntu服务器,用
openssl生成证书签名请求(CSR):- 生成私钥文件:
openssl genrsa -out intranet.mydomain.local.key 2048 - 生成CSR文件:
openssl req -new -key intranet.mydomain.local.key -out intranet.mydomain.local.csr
这里要注意:Common Name(CN)必须填intranet.mydomain.local,其他字段(比如组织名、部门)要和AD域的信息对应上,别乱填
- 生成私钥文件:
- 把生成的
intranet.mydomain.local.csr传到能访问AD CA的机器上,打开AD CA的网页控制台(一般是http://<你的CA服务器域名>/certsrv),选「申请证书」→「高级证书申请」→「提交一个用base64编码的证书申请文件」,把CSR内容粘进去,证书模板选「Web服务器」 - 提交后,企业CA一般会自动审批,之后下载Base64编码的服务器证书(.cer格式),同时别忘了下载AD CA的根证书(后续可能用得上)
- 把下载的服务器证书、根证书和之前在Ubuntu上生成的私钥,统一放到Ubuntu的SSL目录下,比如
/etc/apache2/ssl/
如果暂时没条件部署AD CS,也可以用自签证书,但后续让客户端信任会麻烦很多,所以优先推荐AD CS方案。
二、怎么让AD客户端自动信任这个证书?
这就是用AD CS的最大优势!
- 当你部署AD企业CA时,根证书会通过Active Directory组策略自动推送到所有域内Windows客户端的「受信任根证书颁发机构」存储里——只要客户端是域成员,默认就会自动同步,不用手动配置
- 你生成的网站证书是由这个被信任的根CA签发的,所以所有域内Windows客户端访问intranet.mydomain.local时,会自动认可证书的合法性,不会弹出讨厌的证书警告
- 要是用自签证书,你就得手动通过组策略把自签的根证书推到所有客户端的信任存储,步骤繁琐,完全没AD CS省心
三、是不是要在AD上生成证书再导入Ubuntu?
没错!核心流程就是在AD侧通过AD CS签发网站证书,然后把签发好的证书文件导入到Ubuntu的Apache服务器上,最后还要配置Apache启用SSL,补充下配置步骤:
- 编辑Apache的SSL站点配置文件,比如
/etc/apache2/sites-available/intranet-ssl.conf,添加以下配置:<VirtualHost *:443> ServerName intranet.mydomain.local DocumentRoot /var/www/intranet SSLEngine on SSLCertificateFile /etc/apache2/ssl/intranet.mydomain.local.crt SSLCertificateKeyFile /etc/apache2/ssl/intranet.mydomain.local.key SSLCACertificateFile /etc/apache2/ssl/AD-Root-CA.crt # 可选,某些场景下需要指定根CA </VirtualHost> - 启用SSL模块和站点,重启Apache:
a2enmod ssl a2ensite intranet-ssl.conf systemctl restart apache2 - 验证配置是否正确:
apache2ctl configtest,如果输出Syntax OK就没问题了
备注:内容来源于stack exchange,提问作者mardon
相关产品推荐
相关产品推荐

