本文件演示：
(1)、签发SAN值包含有1.2.3.4、45.67.19.23、123.234.167.189等3个IPv4地址的服务器证书，
     在实际应用中，用户可以跟据需要对本文件中的IPv4地址个数、具体的IPv4地址等内容作适当调整。
     Chrome浏览器要求服务器证书具有SAN值。
(2)、更改base.xml配置文件后启动qhs。
(3)、启动浏览器对qhs发送http请求。

步骤：
1、在终端输入以下命令创建ca.ks、ca.crt等文件，其中，ca.ks文件用于签发服务器证书、个人证书，ca.crt文件用于导入到浏览器：

   cd ~;
   export JDK_HOME="/usr/java/jdk-11";
   export OUTPUT_DIR="/home/http/sslFiles-2";
   export PASSWORD="123456";
   export DAY_COUNT="7000";
   rm -Rvf $OUTPUT_DIR;
   mkdir -vp $OUTPUT_DIR;

   $JDK_HOME/bin/keytool -genkeypair -storepass $PASSWORD -keypass $PASSWORD \
      -keyalg RSA -keysize 1024 -keystore $OUTPUT_DIR/ca.ks -alias ca -ext bc:c -dname "CN=ca" \
      -validity $DAY_COUNT;

   $JDK_HOME/bin/keytool -exportcert -storepass $PASSWORD -rfc \
      -keystore $OUTPUT_DIR/ca.ks -alias ca -file $OUTPUT_DIR/ca.crt;

2、在终端输入以下命令创建httpServer.ks文件、签发服务器证书，httpServer.ks文件用于运行qhs：

   $JDK_HOME/bin/keytool -genkeypair -storepass $PASSWORD -keypass $PASSWORD \
      -keyalg RSA -keysize 1024 -keystore $OUTPUT_DIR/httpServer.ks -alias httpServer \
      -dname "CN=1.2.3.4, CN=45.67.19.23, CN=123.234.167.189" -validity $DAY_COUNT;

   $JDK_HOME/bin/keytool -certreq -storepass $PASSWORD -keystore $OUTPUT_DIR/httpServer.ks \
      -alias httpServer -file $OUTPUT_DIR/httpServer.csr;

   $JDK_HOME/bin/keytool -gencert -storepass $PASSWORD -rfc -keystore $OUTPUT_DIR/ca.ks \
      -ext san=ip:1.2.3.4,ip:45.67.19.23,ip:123.234.167.189 \
      -alias ca -infile $OUTPUT_DIR/httpServer.csr -outfile $OUTPUT_DIR/httpServer.crt \
      -validity $DAY_COUNT;

   $JDK_HOME/bin/keytool -importcert -storepass $PASSWORD -keystore $OUTPUT_DIR/httpServer.ks \
      -file $OUTPUT_DIR/ca.crt  -noprompt;

   $JDK_HOME/bin/keytool -importcert -storepass $PASSWORD -keystore $OUTPUT_DIR/httpServer.ks \
      -alias httpServer -file $OUTPUT_DIR/httpServer.crt;

3、对/home/http/qhs3.3/config/base.xml配置文件内部的SSLServerSocket元素设置为：
   
   ......
   <SSLServerSocket>
      <Created>true</Created>
      <Address>1.2.3.4</Address>
      <Port>10100</Port>
      <KeyStore>/home/http/sslFiles-2/httpServer.ks</KeyStore>
      <Password>123456</Password>
      <AuthClient>false</AuthClient>
   </SSLServerSocket>

   <SSLServerSocket>
      <Created>true</Created>
      <Address>45.67.19.23</Address>
      <Port>10200</Port>
      <KeyStore>/home/http/sslFiles-2/httpServer.ks</KeyStore>
      <Password>123456</Password>
      <AuthClient>false</AuthClient>
   </SSLServerSocket>

   <SSLServerSocket>
      <Created>true</Created>
      <Address>123.234.167.189</Address>
      <Port>10300</Port>
      <KeyStore>/home/http/sslFiles-2/httpServer.ks</KeyStore>
      <Password>123456</Password>
      <AuthClient>false</AuthClient>
   </SSLServerSocket>
   ......

4、在浏览器导入ca.crt文件。在浏览器管理证书时，应在“授权机构”栏或“证书颁发机构”栏导入
   上面命令创建的/home/http/sslFiles-2/ca.crt文件。

5、本步骤是可选的。如果qhs不要求验证客户端身份(即SSLServerSocket>AuthClient元素值等于false)，可以跳过本步骤
　　 进入第6步骤。如果qhs要求验证客户端身份(即SSLServerSocket>AuthClient元素值等于true)，就必须要导入个人证书。
   以下命令用于创建个人证书文件/home/http/sslFiles-2/person.p12。在浏览器管理证书时，应在“您的证书”栏导入
   /home/http/sslFiles-2/person.p12文件：

   openssl req -newkey rsa:1024 -keyout $OUTPUT_DIR/person.key -out $OUTPUT_DIR/person.csr;

   $JDK_HOME/bin/keytool -gencert -storepass $PASSWORD -rfc -keystore $OUTPUT_DIR/ca.ks \
      -alias ca -infile $OUTPUT_DIR/person.csr -outfile $OUTPUT_DIR/person.crt -validity $DAY_COUNT;

   openssl pkcs12 -in $OUTPUT_DIR/person.crt -inkey $OUTPUT_DIR/person.key -export \
      -out $OUTPUT_DIR/person.p12;

6、在终端输入以下命令设置IPv4地址：

   sudo ip addr add 1.2.3.4 dev lo;
   sudo ip addr add 45.67.19.23 dev lo;
   sudo ip addr add 123.234.167.189 dev lo;

7、运行/home/http/qhs3.3/startup.sh来启动qhs(如果qhs正在运行，就运行/home/http/qhs3.3/shutdown.sh来
   终止qhs的运行，并重新启动qhs)。

8、启动浏览器，在浏览器的地址栏输入以下URL对qhs发送http请求：

   https://1.2.3.4:10100
   https://45.67.19.23:10200
   https://123.234.167.189:10300





