首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于.crt和.key文件的NGINX服务器

基于.crt和.key文件的NGINX服务器
EN

Stack Overflow用户
提问于 2017-09-09 04:11:51
回答 1查看 1.6K关注 0票数 2

问题:

nginx希望其..pem/..crt和.key文件格式化的方式有什么特别之处吗?我不能让nginx跑..。它总是抱怨证书/密钥文件。

问:

有人想和我分享他们的. .pem/crt和.key文件的一份(经过消毒的)副本,在一个正常工作的(非生产)系统上?或者告诉我我做错了什么(见下文)

错误:

将ssltest.cuddletech.com.crt配置为指向nginx.conf并将.crt (和密钥)文件保存在/nginx/server中之后.然后运行nginx启动服务器,得到以下错误:

代码语言:javascript
运行
复制
nginx: [emerg] unexpected end of file, expecting ";" or "}" in /usr/local/etc/nginx/servers/ssltest.cuddletech.com.crt:63

Troubleshooting: `

如果我进去,将一个;放在文件的末尾(就在第二个-----END CERTIFICATE-----;之后)(它是一个包含叶子和中间ca的包)。现在,它不再抱怨意外的结局,而是抱怨:

代码语言:javascript
运行
复制
 nginx: [emerg] unknown directive "-----BEGIN" in /usr/local/etc/nginx/servers/ssltest.cuddletech.com.crt:62

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

有趣的是,如果我将文件类型更改为.pem (最后保持;,并更新nginx.conf以查找.pem)。现在,它根本不抱怨证书文件,而是开始以同样的方式抱怨密钥文件:

代码语言:javascript
运行
复制
$ nginx: [emerg] unexpected end of file, expecting ";" or "}" in /usr/local/etc/nginx/servers/ssltest.cuddletech.com.key:28

;}放在.key文件的末尾会使nginx抱怨:

代码语言:javascript
运行
复制
nginx: [emerg] unknown directive "-----BEGIN" in /usr/local/etc/nginx/servers/ssltest.cuddletech.com.key:27

同样有趣的是,当它抱怨-----BEGIN时,它在文件末尾而不是开始时指示一个行号。

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

我使用Hashicorp的Vault PKI后端(按照这个方法 )生成证书

我将叶子和中间证书剪切并粘贴到一个文件中,私钥粘贴到另一个文件中。

它们看起来是这样的:

证书包:

代码语言:javascript
运行
复制
-----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-----

私钥文件:

代码语言:javascript
运行
复制
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAyWnbF5T5vIlrcVHG82S+u/GESnlhAiX6maUYmpQMVOGsmjWr
XOKFGQbFW796FgENrt1PzXlYT8/aKyT215KomxkC4bWV0daobC5p+fzusVyV51Si
.....
smzFwxewOYa4FU3KGgRlscBooaRumwpXid3IPwfsBzOCdNQ8zXyaqSZeStewxUBq
ZtMEDpD3q7noZQU85cQs4SlbOOscXEUMUaeKQDhC2FWW9qlM5NKU
-----END RSA PRIVATE KEY-----

nginx.conf的HTTPS服务器部分

代码语言:javascript
运行
复制
# HTTPS server
#
server {
    listen       443 ssl;
    server_name  ssltest.cuddletech.com;

    ssl_certificate      /usr/local/etc/nginx/servers/ssltest.cuddletech.com.pem;
    ssl_certificate_key  /usr/local/etc/nginx/servers/ssltest.cuddletech.com.key;

#    ssl_session_cache    shared:SSL:1m;
#    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
#    ssl_prefer_server_ciphers  on;

    location / {
        root  /user/share/nginx/html;
        index  index.html index.htm;
    }
}
include servers/*;
}

我的设置:

Mac 10.12.6 nginx版本: nginx/1.12.1由clang 8.1.0 (clang-802.0.42)构建,OpenSSL 1.1.0f 2017年5月25日启用

TIA有任何建议!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-09 05:12:35

你的问题是include servers/*;语句。您正在将服务器目录中的所有内容作为配置包含在内。因此,证书也是作为config加载的。

要么将其更改为

代码语言:javascript
运行
复制
include servers/*.conf;

或者,如果没有任何你正在包括的秘密,就移除它。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46127025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档