David
发布于 2016-04-10 / 28 阅读 / 0 评论 / 0 点赞

GitLab + WordPress 使用HTTPS

[su_note note_color="#faeb21" text_color="#0f0d0d"]2016年4月17日01:07:39 更新GitLab部分[/su_note] 最近几个经常光顾的网站陆续都升级上https,连一些个人博客都上了,这次我也跟风搞下 对于商业网站来说,很多的是看重安全吧?对于个人来说,逼格才是重中之重,哈哈~ 目前找了两家比较多人用而且免费的证书颁发机构,StartSSL和沃通,前者免费一年,后者则为两年 还有个叫letsencrypt,这个暂时没去看过,不做描述 此处我选择了startssl,先试试升级会遇到什么问题,如果都解决好的话,第二年就考虑切换成付费的证书 条件允许的话,尽量选择更好的付费服务,别忘记“免费是最贵的” 至于申请过程什么的,网上有很多教程,步骤不是很多,自行搜索 申请过后,手头上就会有3个段文本,分别是key、csr、crt key:密钥 csr:证书请求 crt:网站颁发的证书 申请成功后csr就没什么用,我们用的只有两个key和crt,我的网站托管在主机壳上,所以得先在上面设置下 相关提示很清晰,不解释 完了后,在到WordPress设置 -> 常规 中的博客网址都改成https开头 接着修改.htaccess文件,让非https的请求变成https,由于主机壳并不是用443端口,得按他的规则来 所以我的配置是酱紫
RewriteCond %{HTTP:KERSSL} !on
RewriteCond %{HTTP_USER_AGENT} !MSIE/[1-8]\. [NC]
RewriteCond %{HTTP_HOST} isempty.me
RewriteRule ^.*$ https://akru.plus%{REQUEST_URI} [L,R=301]
如果用的是443端口的话
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP_USER_AGENT} !MSIE/[1-8]\. [NC]
RewriteCond %{HTTP_HOST} isempty.me
RewriteRule ^.*$ https://akru.plus%{REQUEST_URI} [L,R=301]
区别仅仅是第一行 接着修改现有文章中的图片链接,WordPress保存的文章都是绝对路径,操作前最好备份下数据库
UPDATE wp_posts SET post_content = Replace (post_content, 'https://akru.plus', 'https://akru.plus')
之前启用了七牛CDN,而七牛并不支持没有备案的域名使用HTTPS加速,这里得停掉他 [su_note note_color="#faeb21" text_color="#0f0d0d"]其实已经在备案的路上,再次启用CDN的时候,那速度,萌萌哒[/su_note] 主机壳自带静态资源加速,速度也不错,影响不是很大 现在刷新下网页,如果地址栏只有灰色的小锁,检查下还有哪些资源没有换成https 要是连小锁的标志都没有,呵呵.....

WP Super Cache

没装这插件的忽略此部分 在完成上面操作后,无论怎么刷新网页和删除缓存,一些资源文件连接还是http,也试过停用缓存功能,问题依旧 最后整个插件停用,再启用,又可以了~~这,真让我无言以对 [su_quote]重启电脑可以解决90%的错误[/su_quote]

GitLab

官方文档足够清晰,且操作也不是很复杂,简单说下吧 先上关于HTTPS部分的文档连接,其实都是在同一个地方...... [su_list] [/su_list] 基本配置 默认情况下,程序会按域名在/etc/gitlab/ssl文件夹中寻找“域名.key”、“域名.crt”两个文件,这里的域名就是external_url 的内容,不过别忘记改ssl文件夹的权限 注意:ssl文件夹是需要自行创建的,同时external_url也要改成https http重定向https 只需要启用即可
nginx['redirect_http_to_https'] = true
自定义端口与存放位置 这部分我也没耍过,反正持有3个参数要改,没什么的啦
external_url "https://gitlab.example.com:2443"
nginx['ssl_certificate']="/etc/gitlab/ssl/gitlab.example.crt"
nginx['ssl_certificate_key']="/etc/gitlab/ssl/gitlab.example.com.key"
PS:改为https的时候注意下端口问题,我操作的时候忘记取消指定http端口,导致访问不了