DIS工作室

自制证书搭建https服务

第一步,自制CA证书和Server证书,私钥

自制CA私钥
openssl genrsa -des3 -out ca.key 4096
自制CA证书
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

自制Server私钥,生成免密码版本
openssl genrsa -des3 -out server.key 4096
openssl rsa -in server.key -out server.nosecret.key
制作csr文件
openssl req -new -key server.key -out server.csr
用CA证书私钥对csr签名(CA不能用X509,这点需要注意)生成Server证书
openssl ca -days 3650 -in server.csr -cert ca.crt -keyfile ca.key -out server.crt


第二步,配置web服务器,nginx配置方法如下

server {
    listen 443;
    server_name www.mydomain.com;

    ssl on;
    ssl_certificate ssl/server.crt;
    ssl_certificate_key ssl/server.nosecret.key;

    location /t {
            echo "Hello World";
    }
}

lighttpd配置如下(需要cat server.nosecret.key server.crt > server.pem)

$HTTP["host"] =~ "(^.*\.|)mydomain.com" {
        $SERVER["socket"] == ":443" {
                ssl.engine                  = "enable"
                ssl.pemfile                 = "/etc/lighttpd/server.pem"
                ssl.ca-file                 = "/etc/lighttpd/server.crt"
        }

        proxy.balance = "round-robin"
        proxy.server = (
                "/" => ((
                        "host"  =>      "127.0.0.1",
                        "port"  =>      9000
                ))
        )
}

第三步,验证方法如下

浏览器使用需导入ca.crt到根证书,curl和wget命令行工具使用方法如下
curl -v --cacert ca.crt "https://www.mydomain.com/t"
wget --ca-certificate=ca.crt https://www.mydomain.com/t

不检查证书
curl需要指定-k参数,wget需要带参数-no-check-certificate
查看证书内容,有效期,用途方法如下
openssl x509 -in ca.crt -noout -text 
openssl x509 -in ca.crt -noout -dates
openssl x509 -in ca.crt -noout -purpose


技术文摘

联系我们

地址: 江苏省常州市

QQ: 79232781

联系人: DIS工作室

电话: 13585315012

邮箱: disstudio@yeah.net