We're working on putting a FIPS 140-2 compliant SQL database on a dedicated machine behind the internal firewall of an organization, and need the capacity to push a specific document or record to an external organization in an ad hoc manner. EG: notify "Zap Labs" that a specific file is awaiting download, then "Zap Labs" can authenticate and retrieve it.

The Problem:

I have very little experience, but pretty solid theoretical understanding. It has to operate on Windows Server, but I can prototype it using OS software on Linux or BSD to get a feel for what needs doing and work from there - I'm trying to understand more right now than implement.

The Question:

What's a good resource on installing and configuring an authenticated login over HTTP? I know there are some serious issues with web app vulnerabilities that need to be considered and I am not familiar with them. Also I figure confidentiality will be ensured via HTTPS(SSL), but I have literally zero experience with how I might actually set that up.

Also, how should I manage the connection between the database and the DMZ web server? I can think of a couple ways this could be done, but none of them seem secure.


  • 2
    Andrew, this is a broad question. TL;DR - yes, you need a HTTPS connection with client certificates, and an encrypted link between the web server and its DB back-end. Depending on your threat model and whether you really feel paranoid, you may need to have secure e-mail messaging with extra noise added, to perform notifications. Feb 19, 2013 at 16:52
  • I managed to get all of that covered except the encrypted link between the web server and the DB back-end. I'm not sure how to implement that in PHP.
    – gal
    Feb 24, 2013 at 5:17
  • Maybe this document about using SSL to connect to MySQL database will help: dev.mysql.com/doc/refman/5.0/en/ssl-connections.html
    – izogfif
    Mar 6, 2013 at 11:03
  • 1
    There is no such thing as "a FIPS 140-2 compliant SQL database". FIPS 140-2 is a standard for cryptographic modules, and there are a variety of ways a database might use them. (I don't know about PHP. Knowing what database server are you using might help someone who does suggest something.)
    – armb
    Apr 8, 2013 at 13:36
  • And at the other end php.net/manual/en/mysqli.ssl-set.php stackoverflow.com/questions/3657765/… But that only helps if he's using MySQL.
    – armb
    Apr 8, 2013 at 13:43

1 Answer 1


As armb said, FIPS 140-2 is used for certifying cryptographic modules. A database is not a crypto module but a database may perhaps may make use of a FIPS140-2 module. This does not mean the database is certified.

There are a number of ways to send a document from the database to a different security environment. The main risks you are trying to mitigate against is you don't want anyone else to be able to see the document and you want to prove it came from you and not someone else to the entity that revives it. The best way to do this is to sign and encrypt the data.

You could do this in a number of ways, its a fairly open question:

  • send it over a trusted bearer, eg a dedicated link or a USB stick by a person who is trusted.
  • Over a secure channel that provides the signing and encrypting, eg SSL using mutual certificates or a VPN.
  • Signing and encrypting the actual data to be sent and then send it over an untrusted bearer, eg the internet.

You can make all these different options as manual or as automated as you want. If its automated, you should probably have some controls to make sure your not accidentally releasing data you don't intend.

I hope this helps.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .