查看“GoDaddy https证书(ssl证书)从购买到Nginx配置”的源代码
←
GoDaddy https证书(ssl证书)从购买到Nginx配置
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
== 原因== pre: 你已购买 官方购买链接 [https://sg.godaddy.com/zh/web-security/ssl-certificate https://sg.godaddy.com/zh/web-security/ssl-certificate] Question: 上次 项目里有5个域名要添加 https,但是这次又要广泛域名了的,领导本来要节省钱的,反而更加浪费钱还浪费我们ops时间了 Answer:<br/> 购买ssl key 这边是决定在godaddy 购买 并选择 UCC/SAN SSL 有5个san 而我要保护的刚好是5个域名 这样的好处是费用比较低,但是对运维的要求可能就比较高,很多要运维操作的,而不像国内的,给钱就全搞定了,直接给你个crt文件 == 第一步 生成证书签名申请 == shell>openssl req -new -newkey rsa:2048 -nodes -keyout your domain name.key -out your domain name.csr Country Name (2 letter code) [AU]:CN(CN就代表中国)<br/> State or Province Name (full namne) [Some-State]:Guangdong(填省份)<br/> Locality Name (eg, city) []:Shaoguan(填城市名)<br/> Organization Name (eg, company) [Internet Widgits Pty Ltd]:XXX.com<br/> Organizational Unit Name (eg, section) []:DBA<br/> Common Name (e.g. server FQDN or YOUR name) []: 一定要注意 这里要填写 5个SAN中的一个哦 这里填写最终认证的网址,如:xxx.com(加不加www都是可以的,加或不加,godaddy都会同时认证www和不带www的。见godaddy的说明 [http://support.godaddy.com/help/article/5343/generating-a-certificate-signing-request?pc_split_value=4) http://support.godaddy.com/help/article/5343/generating-a-certificate-signing-request?pc_split_value=4)]<br/> Email Address []:admin@xxx.com(最好是以域名为后缀的邮箱,填写其它的也行,)<br/> Please enter the following ‘extra’ attributes to be sent with your certificate request<br/> A challenge password []:(留空)<br/> An optional company name []:(留空) #要注意这个哦 一定要注意 如果是UCC 这里要填写 5个SAN中的一个哦 Common Name (eg, your name or your server’s hostname) []:pay.game.com 如果是全域名就用 *.domain.com 省/市/自治区:您的组织机构所在的省/市/自治区。请输入完整名称,不要使用缩写形式。 城市/地区:您的组织机构注册或所在的城市/地区。请输入完整的城市/地区名称,不要使用缩写形式。 组织机构:您的企业依法注册所用的名称。列出的组织机构必须是证书申请中的域名的合法注册人。如果您是以小型企业/个体户注册的,请在“组织机构”字段中输入证书申请人的名字,并在“组织机构单位”字段中输入 DBA(经营部门)名称。 组织机构单位:此字段用于区分组织机构中的各部门,例如“工程部”或“人力资源部”。您可以在此字段中输入 DBA(经营部门)名称(如果有)。 通用名称:在 CSR 的“CN”(通用名称)字段中输入的名称必须是您要为其使用证书的网站的完全限定域名 (FQDN),例如“www.domainnamegoeshere”。请不要在通用名称中添加“[http://”或“https://”,也不要在此字段中输入您的个人姓名。 http://”或“https://”,也不要在此字段中输入您的个人姓名。] 如果您申请的是通配符证书,请在通用名称的左侧添加星号 (*),例如“*.domainnamegoeshere.com”。这样做会保护该通用名称的所有子域。 注意:如果您输入“www.domainnamegoeshere.com”作为证书签名申请中的通用名称,则该证书会同时保护“www.domainnamegoeshere.com”和“domainnamegoeshere.com” == 第二步 添加主题备用名称 == (如果有多个san的话,如果不是 直接跳过) <br/> 添加主题备用名称 (SAN)<br/> ucc 添加主题备用名称<br/> [https://certs.godaddy.com/cert/advanced/jkl4oaea7onn3qfhjdmecmd7kydjy6c6 https://certs.godaddy.com/cert/advanced/jkl4oaea7onn3qfhjdmecmd7kydjy6c6] == 第三步 GoDaddy提交CSR,并等待验证 == <br/> (name of your certificate).csr,把里面的内容粘到godaddy的相应表单内,然后等待审核 如果域名不在你的这个帐号中 就要[https://sg.godaddy.com/zh/help/verify-domain-ownership-html-or-dns-7452 Verify domain ownership ]<br/> 我一般选择HTML Page 按要求 上传个文件到web目录下 验证 ownship 通配符证书 要去dns解析哪里 添加一个 主机为 @ (这个是以前的DZC) ,记录类型为 TXT, 值为 过了阵子会自己生成给你 现在的应该是@ Field What to enter Name (Host) Type @ Value Type the entire TXT value we sent you https://sg.godaddy.com/zh/help/verify-domain-ownership-html-or-dns-7452 通配符证书可以保护2级域名,至于3、4 级域名,需要用UCC保护多个证书去保护 <br/> [https://sg.godaddy.com/zh/help/ssl-html-dns-7452 https://sg.godaddy.com/zh/help/ssl-html-dns-7452]<br/> [https://sg.godaddy.com/zh/help/verify-domain-ownership-html-or-dns-7452 https://sg.godaddy.com/zh/help/verify-domain-ownership-html-or-dns-7452] == 第四步下载证书 == 审核过了,去GoDaddy下载生成的证书,选择证书时,服务器类型选择 other ,不要问我为什么 哈哈 这里要注意,下载回来的是2个crt文件,需要运行下面命令把他们合并成一个,这个其实是nignx的问题 如下 [http://nginx.org/en/docs/http/configuring_https_servers.html#chains http://nginx.org/en/docs/http/configuring_https_servers.html#chains] cat www.mysite.com.crt gd_bundle.crt > mysite_combined.crt == 第五步 修改或者添加 nginx的配置文件 == server {<br/> #listen [::]:80;<br/> #listen [::]:80 ipv6only=on;<br/> listen 443 ssl;<br/> server_name game.com ;<br/> ssl_certificate /data/game.com.crt;<br/> ssl_certificate_key /data/game.com.key;<br/> ssl_protocols TLSv1 TLSv1.1 TLSv1.2;<br/> ssl_ciphers HIGH:!aNULL:!MD5; == 强制跳转443== <pre> 第一种写法 if ($scheme = http) { return 301 https://$server_name$request_uri; } 第二种写法 server { listen 80; server_name hub.com; return 301 https://$server_name$request_uri; } server { #listen 443 default ssl; listen 443 ; server_name hub.com; </pre> ==https和http并存== <pre> server { listen 80; listen 443 ssl; server_name www.iamle.com; index index.html index.htm index.php; root /home/wwwroot/www.iamle.com/; #ssl on; 这里要注释掉 ssl_certificate /usr/local/nginx/conf/ssl/www_iamle_com.crt; ssl_certificate_key /usr/local/nginx/conf/ssl/www_iamle_com.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; #以下配置省略 } 要让https和http并存,不能在配置文件中使用ssl on,配置listen 443 ssl; 不过我在线上的 nginx/1.14 试过是可以打开的 #Author linuxsa.org 2019 ng1.12 # 172.31.27.83:8861 , 172.31.25.239:8861 , 172.31.16.171:8861 zuul upstream apiconch{ server 172.31.27.83:8861 weight=3 max_fails=2 fail_timeout=5s; server 172.31.25.239:8861 weight=3 max_fails=2 fail_timeout=5s; server 172.31.16.171:8861 weight=3 max_fails=2 fail_timeout=5s; } server { listen 80; # listen 443 ssl; server_name api.pro; #4 https # ssl on; # ssl_certificate /etc/nginx/ssl/STAR.com.crt ; # ssl_certificate_key /etc/nginx/ssl/STAR.com.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # client_max_body_size 100m; client_body_timeout 300; keepalive_timeout 300; client_header_timeout 300; proxy_ignore_client_abort on; access_log /var/log/api.hailuo.pro.log main; error_log /var/log/api.hailuo.pro.error.log crit; # add_header Access-Control-Allow-Origin *; # add_header Access-Control-Allow-Headers X-Requested-With; # add_header Access-Control-Allow-Methods GET,POST,OPTIONS; # location /file/ { # alias /home/l/cailu/; #autoindex on; #autoindex_exact_size on; #autoindex_localtime on; # } location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://apiconch; } } </pre> == 第六 https 测试 == 打开你添加了key 的那个站点, 或者 [https://casecurity.ssllabs.com/ https://casecurity.ssllabs.com/] == 常见问题== SSL_ERROR_RX_RECORD_TOO_LONG 解决办法: 编辑nginx的配置文件 nginx.conf 在 https 的server内 listen 修改为listen 443 ssl; 这里一个小伙伴搞错的错误 记录一下 PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICATE 解压少了一下 这个解压出来 crt 和key 成对的,不是csr unzip _.a.pro_sha256_cn.zip =see also= 参考 [https://www.godaddy.com/help/ssl-certificates-1000006?v=1 https://www.godaddy.com/help/ssl-certificates-1000006?v=1] [https://www.linuxchina.net/?p=3561 类似 https://www.linuxchina.net/?p=3561] 官方参考文档 [https://sg.godaddy.com/help/generate-a-csr-certificate-signing-request-5343 https://sg.godaddy.com/help/generate-a-csr-certificate-signing-request-5343]<br/> [https://sg.godaddy.com/zh/help/generate-a-csr-certificate-signing-request-5343 https://sg.godaddy.com/zh/help/generate-a-csr-certificate-signing-request-5343] [https://blog.csdn.net/huzilinitachi/article/details/80135227 nginx ssl模块使用详解] [https://blog.freessl.cn/ssl-cert-format-introduce/ SSL 证书格式普及,PEM、CER、JKS、PKCS12] [[Category:Nginx]]
返回至
GoDaddy https证书(ssl证书)从购买到Nginx配置
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
我的导航
关于我
shell
python
ops
linuxchina.net
blog.linuxchina
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息