NGINX HTTPS服务器在.crt和.key文件上进行barfing

时间:2017-09-09 04:11:51

标签: ssl nginx pem pki

问题:

nginx想要将.pem / .crt和.key文件格式化的方式有什么特别之处吗?我无法运行nginx ......它总是在抱怨证书/密钥文件。

问:

任何人都想与我分享他们的.pem / crt和.key文件的(已消毒的)副本(非生产)系统上运行正常吗?或者告诉我我做错了什么(见下文)

错误:

配置nginx.conf以指向ssltest.cuddletech.com。 crt 并将.crt(和密钥)文件存放在/ nginx / servers中...然后运行{{1}启动服务器,我收到以下错误:

nginx

故障排除: `

如果我进去并在文件的末尾添加nginx: [emerg] unexpected end of file, expecting ";" or "}" in /usr/local/etc/nginx/servers/ssltest.cuddletech.com.crt:63 (在第二个;之后(它包含叶子和中间ca的捆绑包)。现在,它不再抱怨意外的结局,而是抱怨:


-----END CERTIFICATE-----;

如果我进入并删除----- BEGIN部分,它会继续抱怨未知指令......这次是从编码证书的前几个字符开始。

有趣的是,如果我将文件类型更改为 nginx: [emerg] unknown directive "-----BEGIN" in /usr/local/etc/nginx/servers/ssltest.cuddletech.com.crt:62 (保留;最后,并更新nginx.conf以查找.pem)。现在,它根本没有抱怨证书文件,而是开始抱怨 KEY 文件的相同方式:

.pem

$ nginx: [emerg] unexpected end of file, expecting ";" or "}" in /usr/local/etc/nginx/servers/ssltest.cuddletech.com.key:28 ;放在.key文件的末尾会让nginx抱怨:

}

同样有趣的是,两次抱怨nginx: [emerg] unknown directive "-----BEGIN" in /usr/local/etc/nginx/servers/ssltest.cuddletech.com.key:27 它都表示文件末尾的行号,而不是开头。

我如何生成证书和密钥文件:

我使用Hashicorp的Vault PKI后端(per this howto)生成证书

我将leaf和middle cert剪切并粘贴到一个文件中,将私钥粘贴到另一个文件中。

他们看起来像这样:

证书包:

-----BEGIN

私钥文件:

-----BEGIN CERTIFICATE-----
MIIE/DCCAuSgAwIBAgIUIKX6kkLIidtRvnx0nafFH9SunaIwDQYJKoZIhvc
NAQELBQAwKTEnMCGA1UEAxMeQ3VkZGxldGVjaCBPcHMgSW50ZXJtZWRpYXRlIENBMB4X
DTE3MDkwOTAwMTgxNVoXDTE3MTAwOTAwMTg0NVowITEfMB0GA1UEAxMWc3NsdGVz
.... 
NW9I2ThBDp0uo7LcIO7hmHhNun6apGSlgf6Gj1L63dp
Fe+hoQpCNOGfoc2P+4uJZenqiax5dFqskiBVkQ7uyVFxf5ydF5pjzwF/QFFcKKok
SkRjCJmrVxD/7V6H8u+hSRJuXGXNIIuhhUmYhWoNZpnZEUyDPOuMWHjxq7ZfPHlO
A039BhLFI0msEBfk+DunhYA+xyBIhK0Lq3pqcc7zH9A=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFpTCCA42gAwIBAgIUbXR6po8/oWmxgTVYuhxHDAM1prUwDQYJKoZIhvcNAQEL
BQAwHTEbMBkGA1UEAxMSQ3VkZGxldGVjaCBSb290IENBMB4XDTE3MDkwODIyNTI0
OFoXDTE4MDkwODIyNTMxOFowKTEnMCUGA1UEAxMeQ3VkZGxldGVjaCBPcHMgSW50
.....
ZXJtZWRpYXRlIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwuTe
h9gpV4RcibYNOptsDJHomUZaEkRs3ppGt1asnM5os7L17ExFS8PLSY0SbhB75Vo1
TLlgH2MkDGHbw5bcgY0fYXvKqk1y6JjLFBnmiGHe8mHt9XaWkbnwP/E7CttGr2GC
SaT7RxDN2pHXceTnmLOiz0Dk1ZpssldMVD1MQeSQspuBp9s2sWfXtkrLluPLOZH0
C1WXl+H/7giQggXPmMVLhnxPaaAwU0DNX0IZjzE1fqazBbrx36n7baVdUgRczkD2
Xiht8pnAdbUFdp8byeupDkPJ2vLyMLocvSO6z1m4+drXlgFPBLSgKXGvnw5A8b+S
dqKRe55MBNxpws0E4OjMVwVXlMctcLCogmx6jFYjWSJUQgKLHCi2JVWW6ajlKOfV
Gn/opA11kWKb
-----END CERTIFICATE-----

nginx.conf的HTTPS服务器部分

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAyWnbF5T5vIlrcVHG82S+u/GESnlhAiX6maUYmpQMVOGsmjWr
XOKFGQbFW796FgENrt1PzXlYT8/aKyT215KomxkC4bWV0daobC5p+fzusVyV51Si
.....
smzFwxewOYa4FU3KGgRlscBooaRumwpXid3IPwfsBzOCdNQ8zXyaqSZeStewxUBq
ZtMEDpD3q7noZQU85cQs4SlbOOscXEUMUaeKQDhC2FWW9qlM5NKU
-----END RSA PRIVATE KEY-----

我的设置:

Mac OS X 10.12.6 nginx版本:nginx / 1.12.1   由clang 8.1.0构建(clang-802.0.42)   使用OpenSSL 1.1.0f构建2017年5月25日   启用TLS SNI支持

TIA有任何建议!!!

1 个答案:

答案 0 :(得分:3)

您的问题是include servers/*;声明。您将所有内容都包含在server目录中作为config。因此证书也作为配置加载

将其更改为

include servers/*.conf;

如果没有包含的配置,请将其删除