一、Mac搭建Web服务器
Mac OS X中正好自带了Apache服务,所以这里我们只需要简单的在终端中敲击一行命令,就能启动Web服务了。
sudo apachectl start
这时我们在浏览器中输入"http://127.0.0.1/",如果出现It Works!,那么恭喜你Web服务器启动成功。
二、OpenSSL自制证书
开启HTTPS的第一步,就是需要先生成ssl证书。
-
生成服务器的私钥
sudo mkdir /private/etc/apache2/ssl cd /private/etc/apache2/sslsudo openssl genrsa -out server.key 1024
-
生成签署申请(Common Name必须为服务器的ip或域名)
sudo openssl req -new -key server.key -out server.csr
-
生成CA私钥
sudo openssl genrsa -out ca.key 1024
-
用CA的私钥产生CA的自签署证书
sudo openssl req -new -x509 -days 365 -key ca.key -out ca.crt
-
创建demoCA
sudo mkdir demoCA
cd demoCA
sudo touch index.txt
-
sudo touch serial
-
open .
-
demoCA里面创建文件index.txt和serial,serial内容为01,index.txt为空,以及文件夹newcerts
-
sudo mkdir newcerts
-
cd ../..
-
sudo openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
这样我们就生成了server.crt,server.key,ca.crt文件。将server.crt,server.key配置到服务器上,我们存放的位置是"/private/etc/apache2/ssl/server.crt","/private/etc/apache2/ssl/server.key", ca.crt放到文件根目录中。
配置Apache的SSL服务
仍然是编辑/private/etc/apache2/httpd.conf这个文件,去掉下面三行前面的 '#'
LoadModule ssl_module libexec/apache2/mod_ssl.so
Include /private/etc/apache2/extra/httpd-ssl.conf
Include /private/etc/apache2/extra/httpd-vhosts.conf
LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
编辑/private/etc/apache2/extra/httpd-ssl.conf这个文件,修改
SSLCertificateFile "/private/etc/apache2/server.crt"
SSLCertificateKeyFile "/private/etc/apache2/server.key"
为
SSLCertificateFile "/private/etc/apache2/ssl/server.crt"
SSLCertificateKeyFile "/private/etc/apache2/ssl/server.key"
编辑/private/etc/apache2/extra/httpd-vhosts.conf这个文件,替换里面内容为:
<VirtualHost *:443>
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /private/etc/apache2/ssl/server.crt
SSLCertificateKeyFile /private/etc/apache2/ssl/server.key
ServerName 192.168.10.193
DocumentRoot "/自己定义的路径/"
</VirtualHost>
检查配置,如果有问题按照提示开启相应服务即可。
sudo apachectl configtest
没问题后,重启服务
sudo apachectl restart
这样就可以用https访问我们的本地服务器了。
https://xxx.xxx.xxx
生成plist文件及链接的二维码:
__author__ = ['chaojiang.gcj@alibaba-inc.com']
import qrcode
from PIL import Image
import os, sys
def gen_qrcode(string, path, logo=""):
"""
生成中间带logo的二维码
需要安装qrcode, PIL库
:param string: 二维码字符串
:param path: 生成的二维码保存路径
:param logo: logo文件路径
:return:
"""
qr = qrcode.QRCode(
version=2,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=8,
border=1
)
qr.add_data(string)
qr.make(fit=True)
img = qr.make_image()
img = img.convert("RGBA")
if logo and os.path.exists(logo):
icon = Image.open(logo)
img_w, img_h = img.size
factor = 4
size_w = int(img_w / factor)
size_h = int(img_h / factor)
icon_w, icon_h = icon.size
if icon_w > size_w:
icon_w = size_w
if icon_h > size_h:
icon_h = size_h
icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)
w = int((img_w - icon_w) / 2)
h = int((img_h - icon_h) / 2)
icon = icon.convert("RGBA")
img.paste(icon, (w, h), icon)
img.save(path)
if __name__ == "__main__":
if len(sys.argv) > 2:
urlname = sys.argv[1]
qrpngpath = sys.argv[2]
gen_qrcode(urlname, qrpngpath, "logo.png")
扫描结果: