使用 openssl 制作一个包含 SAN(Subject Alternative Name)的证书
查看证书请求文件的内容:某天发哥在处理一个旧网页,要用iframe嵌入一个网站。
被嵌入网站是一个非ssl的传统站-政府门户陈旧没人维护:(
结果在客户的ssl站点上,始终显示不出来。
查错思路
有问题就找问题,怎么办?
于是在将这个页面放到其它各个站点,排除是否是针对性的,目标站作了来路过滤和屏蔽。
发现不是。
最后发现在非ssl下就正常。
显然是ssl问题了。
问题原理
HTTPS 是 HTTP over Secure Socket Layer,以安全为目标的 HTTP 通道,所以在 HTTPS 承载的页面上不允许出现 http 请求,一旦出现就是提示或报错:
Mixed Content: The page at ‘https://www.taobao.com/‘ was loaded over HTTPS, but requested an insecure image ‘http://g.alicdn.com/s.gif’. This content should also be served over HTTPS.
HTTPS改造之后,我们可以在很多页面中看到如下警报:
多运营对 https 没有技术概念,在填入的数据中不免出现 http 的资源,体系庞大,出现疏忽和漏洞也是不可避免的。
解决方案
CSP设置upgrade-insecure-requests
好在 W3C 工作组考虑到了我们升级 HTTPS 的艰难,在 2015 年 4 月份就出了一个 Upgrade Insecure Requests 的草案(http://www.w3.org/TR/mixed-content/),他的作用就是让浏览器自动升级请求。
在我们服务器的响应头中加入:
header("Content-Security-Policy: upgrade-insecure-requests");
我们的页面是 https 的,而这个页面中包含了大量的 http 资源(图片、iframe等),页面一旦发现存在上述响应头,会在加载 http 资源时自动替换成 https 请求。可以查看 google 提供的一个 demo(https://googlechrome.github.io/samples/csp-upgrade-insecure-requests/index.html):
不过让人不解的是,这个资源发出了两次请求,猜测是浏览器实现的 bug:
当然,如果我们不方便在服务器/Nginx 上操作,也可以在页面中加入 meta 头:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
目前支持这个设置的还只有 chrome 43.0,不过我相信,CSP 将成为未来 web 前端安全大力关注和使用的内容。而 upgrade-insecure-requests 草案也会很快进入 RFC 模式。
从 W3C 工作组给出的 example(http://www.w3.org/TR/upgrade-insecure-requests/#examples),可以看出,这个设置不会对外域的 a 链接做处理,所以可以放心使用。
nbsp;openssl req -text -noout -in ustack.csr
可以看到此证书请求文件中会包含 Subject Alternative Names 字段,并包含之前在配置文件中填写的域名。
使用 openssl 签署带有 SAN 扩展的证书请求
假设使用本机作为子签署 CA 对此证书请求进行签署,签署的方式为:
某天发哥在处理一个旧网页,要用iframe嵌入一个网站。
被嵌入网站是一个非ssl的传统站-政府门户陈旧没人维护:(
结果在客户的ssl站点上,始终显示不出来。
查错思路
有问题就找问题,怎么办?
于是在将这个页面放到其它各个站点,排除是否是针对性的,目标站作了来路过滤和屏蔽。
发现不是。
最后发现在非ssl下就正常。
显然是ssl问题了。
问题原理
HTTPS 是 HTTP over Secure Socket Layer,以安全为目标的 HTTP 通道,所以在 HTTPS 承载的页面上不允许出现 http 请求,一旦出现就是提示或报错:
Mixed Content: The page at ‘https://www.taobao.com/‘ was loaded over HTTPS, but requested an insecure image ‘http://g.alicdn.com/s.gif’. This content should also be served over HTTPS.
HTTPS改造之后,我们可以在很多页面中看到如下警报:
多运营对 https 没有技术概念,在填入的数据中不免出现 http 的资源,体系庞大,出现疏忽和漏洞也是不可避免的。
解决方案
CSP设置upgrade-insecure-requests
好在 W3C 工作组考虑到了我们升级 HTTPS 的艰难,在 2015 年 4 月份就出了一个 Upgrade Insecure Requests 的草案(http://www.w3.org/TR/mixed-content/),他的作用就是让浏览器自动升级请求。
在我们服务器的响应头中加入:
header("Content-Security-Policy: upgrade-insecure-requests");
我们的页面是 https 的,而这个页面中包含了大量的 http 资源(图片、iframe等),页面一旦发现存在上述响应头,会在加载 http 资源时自动替换成 https 请求。可以查看 google 提供的一个 demo(https://googlechrome.github.io/samples/csp-upgrade-insecure-requests/index.html):
不过让人不解的是,这个资源发出了两次请求,猜测是浏览器实现的 bug:
当然,如果我们不方便在服务器/Nginx 上操作,也可以在页面中加入 meta 头:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
目前支持这个设置的还只有 chrome 43.0,不过我相信,CSP 将成为未来 web 前端安全大力关注和使用的内容。而 upgrade-insecure-requests 草案也会很快进入 RFC 模式。
从 W3C 工作组给出的 example(http://www.w3.org/TR/upgrade-insecure-requests/#examples),可以看出,这个设置不会对外域的 a 链接做处理,所以可以放心使用。
nbsp;openssl ca -policy policy_anything -out ustack.crt -config /tmp/openssl.cnf -extensions v3_req -infiles ustack.csr
签署后,查看证书的内容:
某天发哥在处理一个旧网页,要用iframe嵌入一个网站。
被嵌入网站是一个非ssl的传统站-政府门户陈旧没人维护:(
结果在客户的ssl站点上,始终显示不出来。
查错思路
有问题就找问题,怎么办?
于是在将这个页面放到其它各个站点,排除是否是针对性的,目标站作了来路过滤和屏蔽。
发现不是。
最后发现在非ssl下就正常。
显然是ssl问题了。
问题原理
HTTPS 是 HTTP over Secure Socket Layer,以安全为目标的 HTTP 通道,所以在 HTTPS 承载的页面上不允许出现 http 请求,一旦出现就是提示或报错:
Mixed Content: The page at ‘https://www.taobao.com/‘ was loaded over HTTPS, but requested an insecure image ‘http://g.alicdn.com/s.gif’. This content should also be served over HTTPS.
HTTPS改造之后,我们可以在很多页面中看到如下警报:
多运营对 https 没有技术概念,在填入的数据中不免出现 http 的资源,体系庞大,出现疏忽和漏洞也是不可避免的。
解决方案
CSP设置upgrade-insecure-requests
好在 W3C 工作组考虑到了我们升级 HTTPS 的艰难,在 2015 年 4 月份就出了一个 Upgrade Insecure Requests 的草案(http://www.w3.org/TR/mixed-content/),他的作用就是让浏览器自动升级请求。
在我们服务器的响应头中加入:
header("Content-Security-Policy: upgrade-insecure-requests");
我们的页面是 https 的,而这个页面中包含了大量的 http 资源(图片、iframe等),页面一旦发现存在上述响应头,会在加载 http 资源时自动替换成 https 请求。可以查看 google 提供的一个 demo(https://googlechrome.github.io/samples/csp-upgrade-insecure-requests/index.html):
不过让人不解的是,这个资源发出了两次请求,猜测是浏览器实现的 bug:
当然,如果我们不方便在服务器/Nginx 上操作,也可以在页面中加入 meta 头:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
目前支持这个设置的还只有 chrome 43.0,不过我相信,CSP 将成为未来 web 前端安全大力关注和使用的内容。而 upgrade-insecure-requests 草案也会很快进入 RFC 模式。
从 W3C 工作组给出的 example(http://www.w3.org/TR/upgrade-insecure-requests/#examples),可以看出,这个设置不会对外域的 a 链接做处理,所以可以放心使用。
nbsp;openssl x509 -text -noout -in ustack.crt
使用单条命令实现
觉得上面的方式太麻烦了?使用命令一步生成带 SAN 扩展的证书请求文件:
某天发哥在处理一个旧网页,要用iframe嵌入一个网站。
被嵌入网站是一个非ssl的传统站-政府门户陈旧没人维护:(
结果在客户的ssl站点上,始终显示不出来。
查错思路
有问题就找问题,怎么办?
于是在将这个页面放到其它各个站点,排除是否是针对性的,目标站作了来路过滤和屏蔽。
发现不是。
最后发现在非ssl下就正常。
显然是ssl问题了。
问题原理
HTTPS 是 HTTP over Secure Socket Layer,以安全为目标的 HTTP 通道,所以在 HTTPS 承载的页面上不允许出现 http 请求,一旦出现就是提示或报错:
Mixed Content: The page at ‘https://www.taobao.com/‘ was loaded over HTTPS, but requested an insecure image ‘http://g.alicdn.com/s.gif’. This content should also be served over HTTPS.
HTTPS改造之后,我们可以在很多页面中看到如下警报:
多运营对 https 没有技术概念,在填入的数据中不免出现 http 的资源,体系庞大,出现疏忽和漏洞也是不可避免的。
解决方案
CSP设置upgrade-insecure-requests
好在 W3C 工作组考虑到了我们升级 HTTPS 的艰难,在 2015 年 4 月份就出了一个 Upgrade Insecure Requests 的草案(http://www.w3.org/TR/mixed-content/),他的作用就是让浏览器自动升级请求。
在我们服务器的响应头中加入:
header("Content-Security-Policy: upgrade-insecure-requests");
我们的页面是 https 的,而这个页面中包含了大量的 http 资源(图片、iframe等),页面一旦发现存在上述响应头,会在加载 http 资源时自动替换成 https 请求。可以查看 google 提供的一个 demo(https://googlechrome.github.io/samples/csp-upgrade-insecure-requests/index.html):
不过让人不解的是,这个资源发出了两次请求,猜测是浏览器实现的 bug:
当然,如果我们不方便在服务器/Nginx 上操作,也可以在页面中加入 meta 头:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
目前支持这个设置的还只有 chrome 43.0,不过我相信,CSP 将成为未来 web 前端安全大力关注和使用的内容。而 upgrade-insecure-requests 草案也会很快进入 RFC 模式。
从 W3C 工作组给出的 example(http://www.w3.org/TR/upgrade-insecure-requests/#examples),可以看出,这个设置不会对外域的 a 链接做处理,所以可以放心使用。
nbsp;openssl req -new -sha256 \
-key ustack.key \
-subj "/C=CN/ST=Beijing/L=Beijing/O=UnitedStack/OU=Devops/CN=www.ustack.com" \
-reqexts SAN \
-config <(cat /etc/pki/tls/openssl.cnf \
<(printf "[SAN]\nsubjectAltName=DNS:www.ustack.in,DNS:www.test.ustack.com")) \
-out ustack.csr
上面生成证书请求时的几个字段的意义:
C => CountryST => StateL => CityO => OrganizationOU => Organization UnitCN => Common Name (证书所请求的域名)emailAddress => main administrative point of contact for the certificate
签署上面生成的证书:
某天发哥在处理一个旧网页,要用iframe嵌入一个网站。
被嵌入网站是一个非ssl的传统站-政府门户陈旧没人维护:(
结果在客户的ssl站点上,始终显示不出来。
查错思路
有问题就找问题,怎么办?
于是在将这个页面放到其它各个站点,排除是否是针对性的,目标站作了来路过滤和屏蔽。
发现不是。
最后发现在非ssl下就正常。
显然是ssl问题了。
问题原理
HTTPS 是 HTTP over Secure Socket Layer,以安全为目标的 HTTP 通道,所以在 HTTPS 承载的页面上不允许出现 http 请求,一旦出现就是提示或报错:
Mixed Content: The page at ‘https://www.taobao.com/‘ was loaded over HTTPS, but requested an insecure image ‘http://g.alicdn.com/s.gif’. This content should also be served over HTTPS.
HTTPS改造之后,我们可以在很多页面中看到如下警报:
多运营对 https 没有技术概念,在填入的数据中不免出现 http 的资源,体系庞大,出现疏忽和漏洞也是不可避免的。
解决方案
CSP设置upgrade-insecure-requests
好在 W3C 工作组考虑到了我们升级 HTTPS 的艰难,在 2015 年 4 月份就出了一个 Upgrade Insecure Requests 的草案(http://www.w3.org/TR/mixed-content/),他的作用就是让浏览器自动升级请求。
在我们服务器的响应头中加入:
header("Content-Security-Policy: upgrade-insecure-requests");
我们的页面是 https 的,而这个页面中包含了大量的 http 资源(图片、iframe等),页面一旦发现存在上述响应头,会在加载 http 资源时自动替换成 https 请求。可以查看 google 提供的一个 demo(https://googlechrome.github.io/samples/csp-upgrade-insecure-requests/index.html):
不过让人不解的是,这个资源发出了两次请求,猜测是浏览器实现的 bug:
当然,如果我们不方便在服务器/Nginx 上操作,也可以在页面中加入 meta 头:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
目前支持这个设置的还只有 chrome 43.0,不过我相信,CSP 将成为未来 web 前端安全大力关注和使用的内容。而 upgrade-insecure-requests 草案也会很快进入 RFC 模式。
从 W3C 工作组给出的 example(http://www.w3.org/TR/upgrade-insecure-requests/#examples),可以看出,这个设置不会对外域的 a 链接做处理,所以可以放心使用。
nbsp;openssl ca -in ustack.csr \
-extensions SAN \
-config <(cat /etc/pki/tls/openssl.cnf \
<(printf "[SAN]\nsubjectAltName=DNS:www.ustack.in,DNS:www.test.ustack.com")) \
-out ustack.crt
查看证书内容:
$openssl x509 -text -noout -in ustack.crt
(逐浪CMS是国内首个支持SSL证书的高端CMS,并提供逐浪云全面支持高端门户与应用体验,免费下载www.z01.com/pub)
,220)/}
使用,证书,制作,一个,包含