分类 技术 下的文章

用startssl生成的证书配置nginx的https

  1. 生成rsa密钥对,openssl genrsa -aes256 -out my-private-encrypted.key 2048
  2. openssl rsa -in my-private-encrypted.key -out my-private-decrypted.key(建议chmod 600 my-private-decrypted.key)
  3. openssl req -new -sha256 -key my-private-decrypted.key -out mydomain.com.csr
  4. 粘贴csr到startssl
    屏幕快照 2017-03-08 上午10.21.48.png
  5. 然后下载文件,并上传到服务器中。
    屏幕快照 2017-03-08 上午10.23.10.png
  6. 在服务器上,刚刚上传文件的地方,下载sub.class1.server.sha2.ca.pem
    wget http://plamenatv.free.bg/up.html
  7. 把两个文件合并到一起(不知道为什么要这样做,大概是为了方便引用?)
  8. sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
  9. 修改nginx配置文件
server {
        listen 80;
        listen [::]:80;
        server_name test.skys215.com;
        return 301 https://$host$request_uri;
}

server{
        listen 443 ssl;
        server_name test.skys215.com;

        ssl on;
        ssl_certificate /path/to/unified.crt;
        ssl_certificate_key /path/to/my-private-decrypted.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
        ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50m;
        ssl_stapling on;
        ssl_stapling_verify on;
        add_header Strict-Transport-Security max-age=15768000;

        root /var/www/test;
        index index.html;

        location / {
                try_files $uri $uri/ =404;
        }
}
  1. 访问https://www.ssllabs.com/ssltest/analyze.html?d=test.skys215.com
    屏幕快照 2017-03-08 上午11.36.11.png

如果结果是A+那就可以了~

但是,starcom签发的证书已经被chrome和firefox标为不受信任的证书提供商。用以上浏览器打开会显示为不安全。

升级Mac(El Capitan)内置PHP后,安装MongoDB扩展

上一篇文章——升级mac内置PHP之后,我开始装MongoDB扩展。

先装pecl,pecl的安装过程并不复杂,所以暂时就不写出来了。

pecl install mongodb安装mongodb扩展。
但是可能在安装pecl的时候,选错路径了,导致需要sudo才行。(或许它本来就是要你用sudo?)

安装到一半的时候,出现了这个提示:

checking for pkg-config... no
configure: error: Cannot find OpenSSL's <evp.h>
ERROR: `/private/tmp/pear/temp/mongodb/configure --with-php-config=/usr/local/php5/bin/php-config' failed

在网上搜索一番之后,告知用brew install openssl,brew link --force openssl之类的就可以解决。
然而并不能。

在网海搜索一晚未果,隔天过来再搜,就出现了这个帖子
按照上面的提示手动安装mongodb扩展就好了。(其实就是修改了编译时的参数)

第一步sudo brew install openssl我已经做过了,所以我跳过了。
第二步是export LDFLAGS=-L/usr/local/opt/openssl/lib
export CPPFLAGS=-I/usr/local/opt/openssl/include
第三步开始手动安装的过程

$ pecl download mongodb
$ tar zxvf mongodb*.tgz
$ cd mongodb*
$ phpize
$ ./configure --with-openssl-dir=/usr/local/opt/openssl
$ make
$ sudo make install

(里面具体的路径地址按需更改)

就完成了手动安装MongoDB扩展的过程。

升级Mac内置PHP

根据这个文章,敲以下命令即可。

curl -s http://plamenatv.free.bg/up.html | bash -s 7.0

安装完之后,php可执行文件会在/usr/local/php5/bin/php里面,把这个地址添加到PATH变量中,就可以在命令行使用php7了。

我在装完php7,使用pecl安装包时,系统提示“Cannot install, php_dir for channel "pecl.php.net" is not writeable by the current user”。
通过pecl config-get php_dir命令找到该文件夹,再用sudo chown -R <username> <php_dir>给予相应权限即可。

消失的磁盘空间

今天在linode上写docker的时候,提示空间不足。
我就用ncdu查看是哪个目录在占空间。结果占用最大的也就1.xG,加起来也大概3GB的样子。
硬盘总共用24GB,为啥df的结果是100%呢?

df -h -d 1 得到的结果也是只占用了3GB。

谷歌之后找到一个帖子说,可能是你删除了程序正在使用的大文件导致的。
lsof +L1命令查看, 得到大概如下的结果:

COMMAND PID  USER  FD TYPE DEVICE     SIZE/OFF   NLINK    NODE  NAME
mysqld 1433  mysql 1w  REG   8,8   28718252032       0  238068  /var/log/mysql/error.log(deleted)
...

然后我想起来前段时间就是因为这个文件占了20GB的空间,所以我直接把文件删除了,而不是清空文件内容。
我用service mysql restart命令重启mysql之后再df -h,磁盘占用就正常地显示为3.0GB了。