代码拉取完成,页面将自动刷新
同步操作将从 liuzy88/KS 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
清除了CA密钥和签发库
CA自签依次输入:cn sh sh liuzy CA CA,然后回车跳过其他输入;
生成Nginx证书请求依次输入:cn sh sh liuzy nginx nginx,然后回车跳过其他输入;
签发Nginx证书输入两次y回车确认
生成Client证书请求依次输入:cn sh sh liuzy client client,然后回车跳过其他输入;
签发Client证书输入两次y回车确认
打开浏览器,输入主机IP,可以访问Nginx主页
安装了NodeJS、项目生成器、后台运行器
# 新建nodejs项目test
express test -e
# 进入项目目录
cd test
# 安装项目依赖
npm install
# 编辑文件,使访问/时,返回一个JSON字符串
vim routes/index.js
# 删除或用//注释res.render('index', { title: 'Express' });
# 改为
res.send({name:"liuzy",QQ:"416657468"});
cd ~
forever start -o test.log test/bin/www
# 看是否运行,项目默认访问端口是3000
lsof -i :3000
# 用root配置nginx
cd ~
tail -f test.log
浏览器打开http://你主机的IP:3000
会看到服务器返回了一个JSON,内容是:
{"name":"liuzy","QQ":"416657468"}
server {
listen 80;
server_name liuzy.com www.liuzy.com;
location / {
rewrite (.*) https://www.liuzy.com$1 permanent;
}
}
server {
listen 443 ssl;
server_name liuzy.com www.liuzy.com;
ssl_certificate /etc/pki/CA/myssl/nginx.crt;
ssl_certificate_key /etc/pki/CA/myssl/nginx.pem;
#双向认证配置,现在注释
#ssl_client_certificate /etc/pki/CA/cacert.pem;
#ssl_verify_client on;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://127.0.0.1:3000;
client_max_body_size 20m;
}
}
nginx -t
nginx -s reload
(如果你的win8,win10,你先把hosts复制到桌面或其他地方,改好了再拖进来)
打开`C:\Windows\System32\drivers\etc`文件夹
编辑hosts,添加内容:(前面地址是你虚拟机的IP)
192.168.31.186 liuzy.com
192.168.31.186 www.liuzy.com
打开cmd,输入ping liuzy.com,观察是否转到虚拟机IP
http://liuzy.com
或者http://www.liuzy.com
,请求会被系统DNS到你的虚拟机https://www.liuzy.com
用root用户登陆,编辑/etc/nginx/nginx.conf
解开双向认证注释:
ssl_client_certificate /etc/pki/CA/cacert.pem;
ssl_verify_client on;
应用配置还需要:
nginx -s reload
No required SSL certificate was sent
把create.sh脚本签发的客户端证书下载到你的系统,保存到E盘;
/etc/pki/CA/myssl/client.pem
/etc/pki/CA/myssl/client.crt
/etc/pki/CA/myssl/nginx.crt
运行com.liuzy.test.HttpsTest类的main方法;
看,返回了结果!
KeyUtils.write2RsaKey(privateKey, testDir + "me.pem");
KeyUtils.write2PKCS8Key(privateKey, testDir + "me_pkcs8.pem");
// 使用者的信息
String subjectDN = "CN=me.com,OU=我公司,O=我公司,L=shanghai,ST=shanghai,C=cn";
// 签名算法
String signatureAlgorithm = "SHA1withRSA";
// 生成证书请求
PKCS10CertificationRequest csr = CertReqUtils.create(publicKey, privateKey, subjectDN, signatureAlgorithm);
// 写入文件
CertReqUtils.write(csr, testDir + "me.csr");
// CA初始化1
CACenter caCenter = new CACenter();
caCenter.init();
CertUtils.write(caCenter.getCacert(), testDir + "ca.crt");
KeyUtils.write2RsaKey(caCenter.getPrivateKey(), testDir + "ca.pem");
// 签发1 根据公钥和使用者信息
String subjectDN = "C=cn,ST=shanghai,L=shanghai,O=我公司,OU=我公司,CN=me.com";
Certificate newcert1 = caCenter.sign(publicKey, subjectDN);
CertUtils.write(newcert1, testDir + "newcert1.cer");
// CA初始化2
CACenter caCenter = new CACenter();
caCenter.init(testDir + "ca.crt", testDir + "ca.pem");
// 签发2 根据证书请求文件
CertificationRequest csr = CertReqUtils.read(testDir + "me.csr");
Certificate newcert2 = caCenter.sign(csr);
CertUtils.write(newcert2, testDir + "newcert2.cer");
// 读证书
Certificate cert = CertUtils.read(testDir + "newcert1.cer");
// 查看证书信息
CertUtils.print((X509Certificate) cert);
// 验证证书
System.out.println(CertUtils.verify(cert));
运行com.liuzy.test.MyServer类的main方法,输出证书等文件
把证书上传到服务器
# 用liuzy或普通用户登陆
mkdir ssl
# 上传ca.crt、nginx.crt、nginx.pem上传到此
# 把原来的三行用#注释,添加以下
ssl_certificate /home/liuzy/ssl/nginx.crt;
ssl_certificate_key /home/liuzy/ssl/nginx.pem;
ssl_client_certificate /home/liuzy/ssl/ca.crt;
# 应用配置
nginx -s reload
恭喜你,成功看到结果:
[ GET] https://www.liuzy.com
[RESUT] {"name":"liuzy","QQ":"416657468"}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。