Nginx 诡异 SSL_PROTOCOL_ERROR 问题排查

这两天在检查一台 Nginx 配置的时候,遇到了一个极端诡异的问题。一段很通用的配置,配在这个服务器上,就会 100% 导致 Chrome 报 ERR_SSL_PROTOCOL_ERROR 。但是这段配置非常的通用,是用 Mozilla 提供的工具生成的。

而且在 iPhone 的 Safari 上访问又是完全正常的,服务器日志也看不到任何错误。看到的请求相应码也是完全正确的 200 。

先贴出配置:

可以看到是在 Mozilla 网站上选择  和 Modern 生成出来的配置。

在测试过程中,排查了各种问题,包括但不限于 SSL 证书问题,HTTP Basic Auth 问题,http2 问题等等,然而都没有解决这个现象。

一次偶然的尝试,发现只要注释掉我给这个 (更多…)

Nginx 配置 ECC RSA 双证书

Config Nginx for parallel ECC and RSA Certificate

先决条件

Nginx 1.11.0 以上

OpenSSL 1.0.2 以上

申请证书

首先申请 ECC 证书,这个不多说,很多方法都可以,大部分 CA 现在也都可以签署。生成 CSR 的命令是:

拿到证书之后,还是像之前一样将中级 CA 拼接在证书后面,得到给 Nginx 使用的 domain-cert.crt

配置 Nginx

首先是将两个证书链都加入 Nginx 的配置文件:

如果要使用 CT 的话有两种方法:

1. 将两个证书的 CT 信息放到同一目录,并做如下设置:

这样 (更多…)

常用 openssl 命令

The Most Common OpenSSL Commands

One of the most versatile SSL tools is OpenSSL which is an open source implementation of the SSL protocol. There are versions of OpenSSL for nearly every platform, including Windows, Linux, and Mac OS X. OpenSSL is commonly used to create the CSR and private key for many different platforms, including Apache. However, it also has hundreds of different functions that (更多…)

使用 Nginx 反代 Apache 安装 WordPress

最近由于原先博客主机极度不稳定,所以准备了很久,准备进行主机迁移。由于迁移前的环境和迁移后还是有较大的区别,整体架构也不太一样,所以在这里说说迁移过程中遇到的问题。

环境对比

原主机 新主机
操作系统 CentOS 6 CentOS 7
Web 服务器 Apache 2.2 Openresty 1.9.7 + Apache 2.4
PHP 版本 5.5 5.6
其他 SELinux

SELinux

很多人为了省事,在拿到主机的第一时间就直接禁用了 SELinux。不过在学习了一段时间之后,我发现其实 SELinux 是一个很好的保护机器的手段。

这里简单列举几个需要注意的 SELinux 的配置:

 

由于我是将 (更多…)

SSL 双向认证的一个小问题

最近一直在研究 SSL 双向认证,工作中也经常用到。然后今天遇到了一个非常奇怪的问题,那就是就算配置了

客户端的访问仍然会失败,证书认证仍然不过。调试了半天,发现了两个问题,那就是:
1. optional_no_ca 并不会像 off 一样放过所有请求,而是对于提交了证书的请求,如果证书验证不过就会握手出错
2. 对于下面这个配置项的设置存在错误:

经过查找资料,找到了这个选项相关的一些说明。(注:以下实验均在 Nginx 和 Apache2.2 上同时进行过)

The depth actually is the maximum number of intermediate certificate issuers, i.e. the number (更多…)

常用Openssl命令

申请证书

SSL常用于身份验证、数据加密等应用中,要使用SSL,我们密码有自己的证书。数字证书一般要向专业的认证公司(如VeriSign)申请,并且 都是收费的,某些情况下,我们只是想使用加密的数据通信,而不在乎认证,这时就可以自己制作一个证书,自己制作一个证书,有两种方式,一种是Self Signed,另一种是自己制作一个CA,然后由这个CA,来发布我们需要的证书。下面分别介绍这两个方法。

生成Self Signed证书

# 生成一个key,你的私钥,openssl会提示你输入一个密码,可以输入,也可以不输,
# 输入的话,以后每次使用这个key的时候都要输入密码,安全起见,还是应该有一个密码保护
> openssl genrsa -des3 -out selfsign.key 4096

# 使用上面生成的key,生成一个certificate signing request (更多…)

生成Certificate Signing Request(CSR)

众所周知,申请SSL证书前需要先生成证书注册请求,这里一般使用

openssl req -nodes -newkey rsa:2048 -keyout myserver.key -out server.csr

这条命令来生成。生成过程中会填写一些信息,随便写就好。当然最好按实际的填。

Country Name (2 letter code) [AU]: GB
State or Province Name (full name) [Some-State]: Yorks
Locality Name (eg, city) []: York
Organization Name (eg, company) [Internet Widgits Pty Ltd]: MyCompany Ltd
Organizational Unit Name (eg, section) []: IT
Common (更多…)

[优惠]SSL支持通配符证书 2.5刀/年

产品简介:

SSL Certificates – AlphaSSL (Standard/Wildcard)
SSL Brand: AlphaSSL
Alpha SSL is powered by GlobalSign, the International Certification Authority with its own highly trusted root CA certificates.
Validation Type: Domain Validation
Issuance: 20 Minutes
Encryption: 256bit
Reissue Fee: Free

支持通配符*,即绑定了*.imlonghao.com后,aa.imlonghao.com,bb.imlonghao.com,均可以使用此SSL证书!

根据评论,该优惠码是经常性,即续费同价!
购买地址:https://billing.centriohost.com/cart.php?a=add&pid=21

促销代码: (更多…)

Kloxo面板后台SSL证书替换

最近在自己的服务器上搭建Kloxo面板造福大众,然后遇到了一点问题,就是Kloxo面板的后台7777端口访问的时候总是会提示证书是由不受信任的颁发机构颁发。做完一个重度强迫症患者(误),这是绝对不能忍的!

但是找来找去一直没有发现相关的文章。看了大家对不常用的东西一点都不在乎= =|||于是只好自己动手。

首先在你的命令行中输入:

然后你会看到类似这样的显示:

其中/usr/local/lxlabs/kloxo/file/lighttpd.conf就是Kloxo控制面板的Lighttpd配置文件。(找到它真不容易啊。。。在Apache那绕了一个小时的弯,突然灵光一闪看了下进程列表然后哭了。。。这货居然用的是独立的一套Lighttpd。。。)

打开拉到最下方,能看到:

其中ssl.pemfile和ssl.ca-file就是我们需要修改的内容所指的文件就是我们要修改的内容。这里指向的是Kloxo自带的一个证书文件。现在我们修改这两项,将其指定到我们自己的证书文件。注意,ssl.pemfile我之所以没用ssl.crt是因为Lighttpd需要的证书文件比较特殊,是把Key私钥直接附加在crt证书后面生成的。为了不破坏原式证书,我起了一个不一样的名字来区分。 现在我们找到这两个program.pem和program.ca并将其替换成我们自己的证书。

接下来以StartSSL的免费SSL证书为例,说明这两个文件如何生成。

首先,我们从StartSSL拿到的证书文件包括:

ca.pem
ssl.crt
ssl.key
sub.class1.server.ca.pem

四个文件。其中ssl.key是预先解密好的私钥文件。当然不解密应该也可以,但是每次启动服务的时候都需要输入私钥密码,非常麻烦。

首先我们生成program.pem:

这个ssl_key.crt就是我们最终需要的文件,即ssl.pemfile

然后生成ca-certs.crt:

此时生成的文件就是我们需要的文件。

然后将两个文件替换掉原来的文件,把Lighttpd重启一下,再访问就能看到效果了。

刚刚给Blog上了StartSSL的SSL证书

因为更换主机的缘故,在Dropbox里面翻我原来的备份,无意中找到了之前在StartSSL申请的账号的证书,遂导入登陆之。惊喜发现自己的账号还能用,于是决定给我的域名申请一免费的SSL证书。按照官方的提示先对域名进行验证,之后就顺利申请到了证书。

拿到证书后正在忧桑不知道怎么安装,发现StartSSL官方有教程,于是按照指示下载了根证书之后顺利安装。

在这帮他做下宣传吧。StartSSL的证书确实是不错的,而且是免费的SSL证书。不过可惜免费的只能绑定一个子域名,但是一般也够用了。

不过StartSSL的账号可是真难申请。。。如果有想要申请他家的免费SSL证书的话欢迎跟我联系。留言就好。我可以用我的账户帮你申请一个一年的免费证书。