关于PositiveSSL在自己Ubuntu服务器上安装失败的问题
安装PositiveSSL证书简要步骤
- 首先我是先在阿里云服务器上产生一个csr码和一个私钥,因为服务器使用的是Apache + OpenSSL,可以通过命令
openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
可以参考namecheap官方文档Generating CSR on Apache + OpenSSL/ModSSL/Nginx + Heroku
2. 得到CSR码后,需要在namecheap上验证激活SSL,得到证书
How do I activate an SSL certificate?
3. 激活后,官方会往发一封确认激活邮件给你,你确认以后,就会再给你发一封邮件,这一封邮件的附件就是你的证书,证书里包含一个.crt和.ca-bundle文件,具体的介绍可以参照What is CA bundle?,crt文件就是你的Positive SSL证书
4. 接下来就只是需要把这个证书安装到你的服务器上就可以了
可以参照这篇文章去检验你的CA Chain是否正确安装How to check CA Chain installation?, 很感激的是它提供了两个链接去根据你的域名检测证书安装情况
https://www.sslchecker.com/sslchecker
https://certlogik.com/ssl-checker/
如果你是用的linux,并且安装有OpenSSL, 可以直接通过命令去检测
openssl s_client -connect example.com:443
如果一个IP上安装有多个证书,还需要添加 -servername example.com 标志
How to get an OpenSSL .pem file from .key and .crt files?
如果是二进制文件,对于server.crt,可以使用
openssl x509 -inform DER -outform PEM -in server.crt -out server.crt.pem
对于server.key,可以使用
openssl rsa -inform DER -outform PEM -in server.crt -out server.crt.pem
问题1:出现域名手动添加https,可以显示小绿锁,但直接访问还是无安全链接
我直接暴力解决,强制http重定向为https,并重定向到我应用上
在/opt/bitnami/apache2/conf/bitnami/bitnami.conf
里,修改
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]
...
</VirtualHost>
<VirtualHost *:443>
...
</VirtualHost>
然后在我的应用your_installation_directory/apps/your_application/conf/httpd-vhosts.conf
里,
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]
...
</VirtualHost>
<VirtualHost *:443>
...
</VirtualHost>
问题2:在服务器上安装PositiveSSL证书时,进行证书校验出现了 PEM routines PEM_read_bio no start line pem_lib.c 703:Expecting TRUSTED CERTIFICATE
对server.crt校验
openssl x509 -noout -text -in server.crt -modulus | grep Modulus
Modulus=D6E23C2E6140707EA63F3250...
校验server.key
openssl rsa -noout -text -in server.key -modulus | grep Modulus
Modulus=D6E23C2E6140707EA63F3250...
不一样的话,key有问题,Apache无法start, 然后我就出现了如题所示的问题,最后在stackoverflow上找到解决了,
首先解密
openssl rsa -in protected.key -out unprotected.key
然后重新创建PEM
cat unprotected.key yourcert.crt > yourcert.pem
查看listen port
sudo grep -ir "^listen" /opt/gitlab-8.9.6-0/apache2/*
我的结果是
/opt/gitlab-8.9.6-0/apache2/conf/extra/httpd-ssl.conf:Listen 443
/opt/gitlab-8.9.6-0/apache2/conf/original/extra/httpd-ssl.conf:Listen 443
/opt/gitlab-8.9.6-0/apache2/conf/original/httpd.conf:Listen 80
/opt/gitlab-8.9.6-0/apache2/conf/httpd.conf:Listen 80
/opt/gitlab-8.9.6-0/apache2/conf/bitnami/bitnami.conf:Listen 443