BoxCore

Start


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

  • 站点地图

  • 搜索

我的PHP手册

发表于 2017-08-04 | | 阅读次数

文件参数

parse_str:

OpenSSL使用及域名签名

发表于 2017-08-02 | | 阅读次数

一、OpenSSL使用

1
2
3
4
5
6
7
openssl req -in server.csr -noout -subject # 查看csr信息 比如 subject=/C=CN/ST=Guangdong/L=Guangzhou/O=LKS/OU=IT Dept./CN=*.mianfeibang.cn
openssl req -new -newkey rsa:2048 -sha256 -nodes -out domain.cc.csr -keyout domain.cc.key -subj "/C=CN/ST=GuangZhou/L=GuangZhou/O=domain Inc./OU=Web Security/CN=domain.cc/CN=*.domain.cc"
openssl req -new -sha256 -key domain.key -subj "/" \
-reqexts SAN -config <(cat /etc/ssl/openssl.cnf \
<(printf "[SAN]\nsubjectAltName=DNS:foo.com,DNS:www.foo.com"))

openssl配置

各系统openssl默认配置地址:

  • Debian: /etc/ssl/openssl.cnf
  • RHEL and CentOS: /etc/pki/tls/openssl.cnf
  • Mac OSX: /System/Library/OpenSSL/openssl.cnf

二、SSL证书说明

2.1 SSL证书概念和分类

CA,Catificate Authority,它的作用就是提供证书(即服务器证书,由域名、公司信息、序列号和签名信息组成)加强服务端和客户端之间信息交互的安全性,以及证书运维相关服务。任何个体/组织都可以扮演 CA 的角色,只不过难以得到客户端的信任,能够受浏览器默认信任的 CA 大厂商有很多,其中 TOP5 是 Symantec、Comodo、Godaddy、GolbalSign 和 Digicert。

SSL证书用途

  1. 保证服务器和客户端的真实性,杜绝中间人攻击和钓鱼网站
  2. 保护用户数据,通常是客户端的数据到服务器的传输是经过加密传输的,第三方无法监听。

SSL证书认证类别

alt

  • DV(Domain Validation),面向个体用户,安全体系相对较弱,验证方式就是向 whois 信息中的邮箱发送邮件,按照邮件内容进行验证即可通过;
  • OV(Organization Validation),面向企业用户,证书在 DV 证书验证的基础上,还需要公司的授权,CA 通过拨打信息库中公司的电话来确认;
  • EV(Extended Validation),打开 Github 的网页,你会看到 URL 地址栏展示了注册公司的信息,这会让用户产生更大的信任,这类证书的申请除了以上两个确认外,还需要公司提供金融机构的开户许可证,要求十分严格。

SSL提供商

国内免费SSL证书CA提供商:Wosign.com(已经废弃)
国外免费SSL证书CA提供商:StartSSL.com , letsencrypt.org(免费3个月,18年开始支持泛域名) , Cloudflare.com

在线CSR生产工具

  • CSR文件在线生成工具

三、证书配置

1
2
3
4
5
6
7
8
9
openssl x509 -inform PEM -in yourdomain.crt > public.pem
openssl rsa -in yourdomain.key -text > private.pem
openssl rsa -in yourdomain.key -out yourdomain.key.pem
openssl req -newkey rsa:2048 -nodes -keyout local.key -x509 -days 365 -out certificate.pem # 生成 专用密钥和公用证书
openssl x509 -text -noout -in certificate.pem # 检查已创建的证书
openssl pkcs12 -inkey local.key -in certificate.pem -export -out certificate.p12 # 将密钥和证书组合在 PKCS#12 (P12) 捆绑软件中
openssl pkcs12 -in certificate.p12 -noout -info # 验证您的 P12 文件

nginx配置:

1
2
3
4
5
6
7
8
9
10
11
12
service {
listen 443 ssl;
server_name 7daka.local;
ssl_certificate /www/ssl/local/certificate.pem;
ssl_certificate_key /www/ssl/local/local.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
... ...
}

参考

  • 细说 CA 和证书
  • Cloudflare自签名SSL证书
  • OpenSSL生成自签名的sha256泛域名证书
  • 申请Comodo PositiveSSL免费SSL证书教程

随想

发表于 2017-08-01 | | 阅读次数

生活的分享
工作的思考

在iTerm2中使用Zmodem实现快速传输文件(lrzsz)

发表于 2017-08-01 | | 阅读次数

一直苦恼于mac下使用rzsz传文件的问题,今天恰好在运维之美看到了就摘出来分享下。

步骤

大体的步骤有3个,

  1. 客户端安装lrzsz
  2. 服务端安装
  3. 在iTerm2中配置Zmodem

以下是相关脚本

1
2
3
4
5
6
7
apt-get install lrzsz # Ubuntu 服务器安装
yum install lrzsz # CentOS服务器安装
brew install lrzsz # 客户端安装
git clone https://github.com/mmastrac/iterm2-zmodem.git
cd iterm2-zmodem
cp iterm2-recv-zmodem.sh iterm2-send-zmodem.sh /usr/local/bin/

在客户端添加配置:
打开 iTerm2 ,点击 Preferences → Profiles 选择指定的 Profile,这里选 Default。然后继续选择 Advanced → Triggers,并点击 Edit 添加两个触发器。

alt

按如下内容添加两个触发器,首先增加 sz 指令的触发器:

Regular expression: rz waiting to receive.\*\*B0100
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-send-zmodem.sh
Instant: checked

其次增加 rz 指令的触发器:

Regular expression: \*\*B00000000000000
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-recv-zmodem.sh
Instant: checked

完后大工告成,你就可以在iTerm2中使用rz/sz 命令进行远程传输文件了。

常见公共dns分享

发表于 2017-07-26 | | 阅读次数

由于最近google的dns很不稳定,这里记录一些常用的公共dns解析地址供大家参考:

1
2
3
4
5
6
119.29.29.29 # dnspod,介绍地址:https://support.dnspod.cn/Kb/showarticle/tsid/241
114.114.114.114 # 114
8.8.4.4 # google
8.8.8.8 # google
223.5.5.5 # 阿里1
223.6.6.6 # 阿里2

Supervisord使用

发表于 2017-07-26 | | 阅读次数

今天的一个小时学习编程工具是基于python开发的任务管理工具Supervisord,项目官方地址为。下面主要是说明Supervisord的基本用发以及在mac和centos中应用。

一、Supervisord基本用法

1.1 安装Supervisord

supervisor安装方法如下:

1
2
apt-get install supervisor # ubuntu
pip install supervisor # 使用python pip 安装

1.2 配置修改

supervisor默认找配置的路径如:/usr/local/etc/supervisord.conf, /usr/local/supervisord.conf, supervisord.conf, etc/supervisord.conf, /etc/supervisord.conf, /etc/supervisor/supervisord.conf

把所有的配置文件都放在 supervisord.conf 并不是个好主意,一旦管理的进程过多,就很麻烦。所以一般都会 新建一个目录来专门放置进程的配置文件,然后通过 include 的方式来获取这些配置信息

1
2
[include]
files = /etc/supervisor/conf.d/*.conf

1.3 Supervisord基础命令

命令详解

  • supervisord: 初始启动Supervisord,启动、管理配置中设置的进程;
  • supervisorctl stop(start, restart) xxx,停止(启动,重启)某一个进程(xxx);
  • supervisorctl reread: 只载入最新的配置文件, 并不重启任何进程;
  • supervisorctl reload: 载入最新的配置文件,停止原来的所有进程并按新的配置启动管理所有进程;
  • supervisorctl update: 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启;

a. 管理进程例子

supervisord是通过 supervisorctl进行进程管理,由于目前没有添加任何需要管理的进程,所以 status 没有输出人和结果,接下来我们添加一个需要管理的进程 (以启动一个 celery 的 worker 为例)。

1
2
3
4
5
6
7
[program:celeryd]
command=celery worker --app=task -l info ; 启动命令
stdout_logfile=/var/log/supervisor/celeryd_out.log ; stdout 日志输出位置
stderr_logfile=/var/log/supervisor/celeryd_err.log ; stderr 日志输出位置
autostart=true ; 在 supervisord 启动的时候自动启动
autorestart=true ; 程序异常退出后自动重启
startsecs=10 ; 启动 10 秒后没有异常退出,就当作已经正常启动

然后运行以下命令更新配置并启动进程:

  • supervisorctl reread: 只更新配置文件
  • supervisorctl update: 只启动有改动的进程
  • supervisorctl status: 查看状态

我们看到 celery worker 已经被成功启动了。你可以使用不同的命令来控制进程的启动和关闭:

1
2
3
supervisorctl stop celeryd # 停止
supervisorctl start celeryd
supervisorctl restart celeryd

切记,每次修改或增删了配置文件, 都需要执行: supervisorctl update。执行supervisord可以进入 supervisorctl 的 shell 界面,

1
2
3
$ supervisorctl
supervisor> status # 查看状态
supervisor>

二、Supervisord在Mac osx中的应用

在mac中启用supervisor需要借助launchctl, 启用后就可以借助supervisor启用其他相关的进程了。这里说下我的配置,supervisord进程和配置内容如下:

  • conf: /usr/local/etc/supervisord.conf
  • bin: /usr/local/bin/supervisord

配置文件/usr/local/etc/supervisord.conf内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
; conf:/usr/local/etc/supervisord.conf
; bin:/usr/local/bin/supervisord
[unix_http_server]
file=/tmp/supervisor.sock ; path to your socket file
[supervisord]
logfile=/usr/local/var/log/supervisord/supervisord.log ; supervisord log file
logfile_maxbytes=50MB ; maximum size of logfile before rotation
logfile_backups=10 ; number of backed up logfiles
loglevel=error ; info, debug, warn, trace
pidfile=/usr/local/var/run/supervisord.pid ; pidfile location
nodaemon=false ; run supervisord as a daemon
minfds=1024 ; number of startup file descriptors
minprocs=200 ; number of process descriptors
user=root ; default user
childlogdir=/usr/local/var/log/supervisord/ ; where child log files will live
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
[include]
; files = /usr/local/etc/supervisor/conf.d/*.conf
files = /usr/local/etc/supervisor.d/*.conf
[program:mongod]
command=/usr/local/bin/mongod
[program:redis-server]
command=/usr/local/bin/redis-server

vim ~/Library/LaunchAgents/supervisord.plist

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
<key>Label</key>
<string>supervisord</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/supervisord</string>
<string>-n</string>
<string>-c</string>
<string>/usr/local/etc/supervisord.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

配置好后执行如下命令运行:

launchctl load ~/Library/LaunchAgents/supervisord.plist

三、扩展


以上内容,感谢如下博主分享:

  • 在 Mac OS X 上使用 supservisor 来管理后台进程
  • link

Chrome高阶使用方法

发表于 2017-07-25 | 分类于 tools | | 阅读次数

设置https自动跳转

开启和关闭都在 chrome://net-internals/#hsts

  • 开启
    chrome 开启https跳转

开启后,每次访问google.com 都会自动跳转到https

  • 关闭
    chrome close https

关闭后,你可以手动输入http 或者 https进行访问

设置

使用Let's Encrypt加密网站

发表于 2017-07-25 | | 阅读次数

Let’s Encrypt是一家开源的ssl签名验证工具,除了万恶的ie6,几户支持其他所有的浏览器,关键是还免费。关于其自动签名工具网站有很多,我这边就简单举例说下主要工具的应用场景。

certbot验证域名

官方提供的自动签名脚本,项目地址在:https://github.com/certbot/certbot。很可惜没有配置成功过,看网上代码配置还是非常简单的

acme-tiny验证域名

  • 项目地址:https://github.com/diafygi/acme-tiny

使用简单,需要配置nginx在自己的域名下,我比较喜欢用他的一点是所验证的域名,如果非在该域名下也可以访问,不过会提示ssl不安全,这是比le-dns验证好的一点。

le-dns验证域名

  • 项目地址:https://github.com/boxcore/shell/tree/master/tools/le-dns

最简单的验证方式,你必须要有域名的所有权限,目前支持的有dnspod和cloudxns,使用前你需要申请下key。个人比较喜欢用dns,好处的脚本自动写好续签了,很人性化,不过子域名没有签名的话,不能共用ssl证书。

VS Code最佳方式

发表于 2017-07-19 | 分类于 IDE | | 阅读次数

一、安装和使用

去官网下载即可

二、快捷键

按键说明:

  • ⌘: command
  • ⌃: control
  • ⇧: shift
  • ⌥: alt(option)

2.1 vscode常用快捷键

  • ⌃ + R: 项目切换

markdown preview 功能

  • ⇧⌘V:新窗口预览markdown文件
  • ⌘K V: markdown preview side-by-side

三、插件及使用

  • PHP IntelliSense: php 函数跳转工具

3.1 markdown-table-formatter

markdown-table-formatter插件地址
markdown-table-formatter

快捷键: alt+shift+f

四、个人配置

4.1 个人快捷键配置

使用⌘+k s打开配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// 将键绑定放入此文件中以覆盖默认值
[
// insert date keymap from sublime
{
"command": "insertDateString.insertDateTime",
"key": "alt+f5",
"when": "editorTextFocus"
},
{
"command": "insertDateString.insertDate",
"key": "f5",
"when": "editorTextFocus"
},
{
"key": "ctrl+f5",
"command": "insertDateString.insertTimestamp"
},
{
"key": "cmd+ctrl+p",
"command": "workbench.action.openRecent"
},
{
"key": "cmd+y",
"command": "redo",
"when": "editorTextFocus && !editorReadonly"
}
]

4.2 设置在命令行中打开VSC

配置 .bash_profile 或者 .zshrc 文件:

1
2
3
4
alias vsc='/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code';
VSC_BIN='/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin';
PATH=$VSC_BIN:$PATH;
export PATH;

然后让配置生效,在控制台执行:

1
2
3
4
5
6
# 如果没有安装 zsh,可能是 ~/.bash_profile
source ~/.zshrc
# 这个时候就可以在全局打开了:
# -a 的意思是不要新开窗口,在当前已经打开的 vsc 中打开文件
vsc path/to/file.ext -a

Vue.js学习笔记

发表于 2017-07-19 | 分类于 javascript | | 阅读次数

作为开发者,学习一门新语言或者框架的时候,势必会想到,为什么会学(用)这个呢?同样的,学vue.js理由有很多,下面是我觉得vue.js做的比较好的地方:

  1. 目前属于中文世界最流行的前端框架,有丰富的文档支持,上手极快。
  2. 单文件组件的好处

同样的,也有很多不好的地方,跟以往的框架不一样,这里会有些新的思维。本来想着把目前几个后台的smarty都切换到vue.js,发现其成本太高,如果要用vuejs,全部模板都要重构!这相当是vuejs的一些坏处了吧。。。

好了,废话不多说,开始说下vue.js的一些基础内容咯。

一、说说Vue.js

首先带个问题:

  1. Vue.js 的核心思想是什么?

    答: 1、数据驱动; 2、组件化

  2. Vue.js 的单文件组件有什么作用?

    答:

Vue.js 可以做什么?

  • 移动端的web开发
  • 后台管理系统
  • 混合应用 WebApp
  • 其他一些不用兼容IE8及以下的项目(如果你还用IE8以下的浏览器,建议你弃坑!)

1.1 常用指令

  • 条件指令 :v-if、v-else
  • 循环指令 :v-for
  • 事件指令 :v-on
  • 其他指令 :v-show、v-model …

他们都有一个共性就是v-前缀,这就是vue.js指令的特点了。那么如何使用vue.js呢?这里有个简单例子:

二、vue.js基础

2.1 数据驱动(Data-Driven)

vue.js是通过 MVVM 的数据绑定实例自动同步

2.2 组件化(Component)

2.3 实例生命周期(Life-Cycle)

常用的生命周期钩子函数

三、vue.js进阶

3.1 Vue.js 脚手架工具的使用

1
2
3
4
vue init webpack vue-demo # 初始化项目
cd vue-demo # 切换到该项目
npm install # 安装依赖的包
npm run dev 与 npm run build # 开发与打包

vue.js包含内容

  • template
  • script
  • css
1…161718…26
Zack Hwang

Zack Hwang

Go

257 日志
42 分类
76 标签
RSS
Links
  • 小白博客
  • 我的书单
© 2018 Zack Hwang
由 Hexo 强力驱动
主题 - NexT.Muse
又拍云