(window.webpackJsonp = window.webpackJsonp || []).push([ [25], { 393: function(t, s, a) { 'use strict'; a.r(s); var n = a(42), e = Object(n.a)( {}, function() { var t = this, s = t.$createElement, a = t._self._c || s; return a('ContentSlotsDistributor', { attrs: { 'slot-key': t.$parent.slotKey } }, [ a('p', [ t._v('目前'), a('strong', [t._v('H5-Dooring')]), t._v('全面支持https部署, 具体方式方案如下.'), ]), t._v(' '), a('h3', { attrs: { id: '前端工程' } }, [ a('a', { staticClass: 'header-anchor', attrs: { href: '#前端工程' } }, [t._v('#')]), t._v(' 前端工程'), ]), t._v(' '), a('p', [ t._v('我们需要在前端工程中的'), a('code', [t._v('src/pages/document.ejs')]), t._v('中的'), a('code', [t._v('head')]), t._v('中添加如下代码:'), ]), t._v(' '), a('div', { staticClass: 'language-html extra-class' }, [ a('pre', { pre: !0, attrs: { class: 'language-html' } }, [ a('code', [ a('span', { pre: !0, attrs: { class: 'token tag' } }, [ a('span', { pre: !0, attrs: { class: 'token tag' } }, [ a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('<')]), t._v('meta'), ]), t._v(' '), a('span', { pre: !0, attrs: { class: 'token attr-name' } }, [ t._v('http-equiv'), ]), a('span', { pre: !0, attrs: { class: 'token attr-value' } }, [ a('span', { pre: !0, attrs: { class: 'token punctuation attr-equals' } }, [ t._v('='), ]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('"')]), t._v('Content-Security-Policy'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('"')]), ]), t._v(' '), a('span', { pre: !0, attrs: { class: 'token attr-name' } }, [ t._v('content'), ]), a('span', { pre: !0, attrs: { class: 'token attr-value' } }, [ a('span', { pre: !0, attrs: { class: 'token punctuation attr-equals' } }, [ t._v('='), ]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('"')]), t._v('upgrade-insecure-requests'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('"')]), ]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('>')]), ]), t._v('\n'), ]), ]), ]), a('p', [t._v('目的是强制将页面中HTTP请求转换为HTTPS.')]), t._v(' '), a('h3', { attrs: { id: '服务器工程' } }, [ a('a', { staticClass: 'header-anchor', attrs: { href: '#服务器工程' } }, [ t._v('#'), ]), t._v(' 服务器工程'), ]), t._v(' '), a('h4', { attrs: { id: '_1-申请ssl证书' } }, [ a('a', { staticClass: 'header-anchor', attrs: { href: '#_1-申请ssl证书' } }, [ t._v('#'), ]), t._v(' 1. 申请SSL证书'), ]), t._v(' '), a('h4', { attrs: { id: '_2-生成-server-csr-server-key' } }, [ a( 'a', { staticClass: 'header-anchor', attrs: { href: '#_2-生成-server-csr-server-key' }, }, [t._v('#')], ), t._v(' 2. 生成 server.csr+server.key'), ]), t._v(' '), a('h4', { attrs: { id: '_3-通过证书链生成-pem文件' } }, [ a( 'a', { staticClass: 'header-anchor', attrs: { href: '#_3-通过证书链生成-pem文件' } }, [t._v('#')], ), t._v(' 3. 通过证书链生成.pem文件'), ]), t._v(' '), a('h4', { attrs: { id: '在server中的src-index-js按如下方式修改' } }, [ a( 'a', { staticClass: 'header-anchor', attrs: { href: '#在server中的src-index-js按如下方式修改' }, }, [t._v('#')], ), t._v(' 在'), a('code', [t._v('server')]), t._v('中的'), a('code', [t._v('src/index.js')]), t._v('按如下方式修改'), ]), t._v(' '), a('div', { staticClass: 'language-js extra-class' }, [ a('pre', { pre: !0, attrs: { class: 'language-js' } }, [ a('code', [ a('span', { pre: !0, attrs: { class: 'token comment' } }, [ t._v('// 忽略部分无影响代码'), ]), t._v('\n'), a('span', { pre: !0, attrs: { class: 'token keyword' } }, [t._v('import')]), t._v(' https '), a('span', { pre: !0, attrs: { class: 'token keyword' } }, [t._v('from')]), t._v(' '), a('span', { pre: !0, attrs: { class: 'token string' } }, [t._v("'https'")]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(';')]), t._v('\n\n'), a('span', { pre: !0, attrs: { class: 'token comment' } }, [ t._v('// 你的ssl存放路径, 建议直接放在server目录下'), ]), t._v('\n'), a('span', { pre: !0, attrs: { class: 'token keyword' } }, [t._v('const')]), t._v(' filePath '), a('span', { pre: !0, attrs: { class: 'token operator' } }, [t._v('=')]), t._v(' path'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('.')]), a('span', { pre: !0, attrs: { class: 'token function' } }, [t._v('join')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('(')]), t._v('__dirname'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(',')]), t._v(' '), a('span', { pre: !0, attrs: { class: 'token string' } }, [t._v("'../ssl'")]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(')')]), t._v('\n\n'), a('span', { pre: !0, attrs: { class: 'token comment' } }, [ t._v('// 启动逻辑'), ]), t._v('\n'), a('span', { pre: !0, attrs: { class: 'token keyword' } }, [t._v('async')]), t._v(' '), a('span', { pre: !0, attrs: { class: 'token keyword' } }, [t._v('function')]), t._v(' '), a('span', { pre: !0, attrs: { class: 'token function' } }, [t._v('start')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('(')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(')')]), t._v(' '), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('{')]), t._v('\n '), a('span', { pre: !0, attrs: { class: 'token comment' } }, [ t._v('// https配置'), ]), t._v('\n '), a('span', { pre: !0, attrs: { class: 'token keyword' } }, [t._v('const')]), t._v(' httpsOptions '), a('span', { pre: !0, attrs: { class: 'token operator' } }, [t._v('=')]), t._v(' '), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('{')]), t._v('\n key'), a('span', { pre: !0, attrs: { class: 'token operator' } }, [t._v(':')]), t._v(' fs'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('.')]), a('span', { pre: !0, attrs: { class: 'token function' } }, [ t._v('readFileSync'), ]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('(')]), t._v('path'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('.')]), a('span', { pre: !0, attrs: { class: 'token function' } }, [t._v('join')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('(')]), t._v('filePath'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(',')]), t._v(' '), a('span', { pre: !0, attrs: { class: 'token string' } }, [ t._v("'3536084__doctopia.com.cn.key'"), ]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(')')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(')')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(',')]), t._v(' '), a('span', { pre: !0, attrs: { class: 'token comment' } }, [ t._v('//ssl文件路径'), ]), t._v('\n cert'), a('span', { pre: !0, attrs: { class: 'token operator' } }, [t._v(':')]), t._v(' fs'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('.')]), a('span', { pre: !0, attrs: { class: 'token function' } }, [ t._v('readFileSync'), ]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('(')]), t._v('path'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('.')]), a('span', { pre: !0, attrs: { class: 'token function' } }, [t._v('join')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('(')]), t._v('filePath'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(',')]), t._v(' '), a('span', { pre: !0, attrs: { class: 'token string' } }, [ t._v("'3536084__doctopia.com.cn.pem'"), ]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(')')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(')')]), t._v(' '), a('span', { pre: !0, attrs: { class: 'token comment' } }, [ t._v('//ssl文件路径'), ]), t._v('\n '), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('}')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(';')]), t._v('\n\t\n\t'), a('span', { pre: !0, attrs: { class: 'token comment' } }, [ t._v('// https服务'), ]), t._v('\n '), a('span', { pre: !0, attrs: { class: 'token keyword' } }, [t._v('const')]), t._v(' server '), a('span', { pre: !0, attrs: { class: 'token operator' } }, [t._v('=')]), t._v(' https'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('.')]), a('span', { pre: !0, attrs: { class: 'token function' } }, [ t._v('createServer'), ]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('(')]), t._v('httpsOptions'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(',')]), t._v(' app'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('.')]), a('span', { pre: !0, attrs: { class: 'token function' } }, [t._v('callback')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('(')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(')')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(')')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(';')]), t._v('\n\n '), a('span', { pre: !0, attrs: { class: 'token keyword' } }, [t._v('const')]), t._v(' io '), a('span', { pre: !0, attrs: { class: 'token operator' } }, [t._v('=')]), t._v(' '), a('span', { pre: !0, attrs: { class: 'token function' } }, [t._v('require')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('(')]), a('span', { pre: !0, attrs: { class: 'token string' } }, [t._v("'socket.io'")]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(')')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('(')]), t._v('server'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(')')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(';')]), t._v('\n\t\n\t'), a('span', { pre: !0, attrs: { class: 'token comment' } }, [ t._v('// 忽略其他无影响代码'), ]), t._v('\n\t\n\t'), a('span', { pre: !0, attrs: { class: 'token comment' } }, [ t._v('// https默认443, 这里我们可以走公共配置'), ]), t._v('\n\tserver'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('.')]), a('span', { pre: !0, attrs: { class: 'token function' } }, [t._v('listen')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('(')]), a('span', { pre: !0, attrs: { class: 'token number' } }, [t._v('443')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(',')]), t._v(' '), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('(')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(')')]), t._v(' '), a('span', { pre: !0, attrs: { class: 'token operator' } }, [t._v('=>')]), t._v(' '), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('{')]), t._v('\n\t console'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('.')]), a('span', { pre: !0, attrs: { class: 'token function' } }, [t._v('log')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('(')]), a('span', { pre: !0, attrs: { class: 'token template-string' } }, [ a( 'span', { pre: !0, attrs: { class: 'token template-punctuation string' } }, [t._v('`')], ), a('span', { pre: !0, attrs: { class: 'token string' } }, [ t._v('服务器地址:'), ]), a('span', { pre: !0, attrs: { class: 'token interpolation' } }, [ a( 'span', { pre: !0, attrs: { class: 'token interpolation-punctuation punctuation' }, }, [t._v('${')], ), t._v('config'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('.')]), t._v('staticPath'), a( 'span', { pre: !0, attrs: { class: 'token interpolation-punctuation punctuation' }, }, [t._v('}')], ), ]), a( 'span', { pre: !0, attrs: { class: 'token template-punctuation string' } }, [t._v('`')], ), ]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(')')]), t._v('\n\t'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('}')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(')')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(';')]), t._v('\n'), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('}')]), t._v('\n\n'), a('span', { pre: !0, attrs: { class: 'token function' } }, [t._v('start')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v('(')]), a('span', { pre: !0, attrs: { class: 'token punctuation' } }, [t._v(')')]), t._v('\n'), ]), ]), ]), ]); }, [], !1, null, null, null, ); s.default = e.exports; }, }, ]);